{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chapter 8: Integration"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Robert Johansson\n",
    "\n",
    "Source code listings for [Numerical Python - Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib](https://www.apress.com/us/book/9781484242452) (ISBN 978-1-484242-45-2)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib as mpl\n",
    "\n",
    "mpl.rcParams['mathtext.fontset'] = 'stix'\n",
    "mpl.rcParams['font.family'] = 'serif'\n",
    "mpl.rcParams['font.sans-serif'] = 'stix'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from scipy import integrate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import sympy\n",
    "import mpmath"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sympy.init_printing()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Simpson's rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "a, b, X = sympy.symbols(\"a, b, x\")\n",
    "f = sympy.Function(\"f\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#x = a, (a+b)/3, 2 * (a+b)/3, b # 3rd order quadrature rule\n",
    "x = a, (a+b)/2, b # simpson's rule\n",
    "#x = a, b # trapezoid rule\n",
    "#x = ((b+a)/2,)  # mid-point rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "w = [sympy.symbols(\"w_%d\" % i) for i in range(len(x))] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "q_rule = sum([w[i] * f(x[i]) for i in range(len(x))])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle w_{0} f{\\left(a \\right)} + w_{1} f{\\left(\\frac{a}{2} + \\frac{b}{2} \\right)} + w_{2} f{\\left(b \\right)}$"
      ],
      "text/plain": [
       "              ⎛a   b⎞          \n",
       "w₀⋅f(a) + w₁⋅f⎜─ + ─⎟ + w₂⋅f(b)\n",
       "              ⎝2   2⎠          "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q_rule"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "phi = [sympy.Lambda(X, X**n) for n in range(len(x))]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAANYAAAAaCAYAAADLyaLhAAAABHNCSVQICAgIfAhkiAAABCtJREFUeJzt20mIHUUYwPGfjuMWQyQZNfHiiIrBg4mgBFGJuKB40EhARQgZweUiiAYP5mIQCRFRcwh48DKiBlyI4sWD2xyMXqKiQTyEkIcLOBqRGFzQuByqH75500vVW5J5Un94NN1d/dU3/+Hrrup6j0wmk8lkhsi12IvDeBvnDCrwcnyAbXhoUEEzmRFgOV7ExbgBB/Bu5LUbhZp5B5eWNZjEPzih3ywzmRHjTizp2J/C74kxWrgOju8hgVN7vO5ocXLJsUU4boh9LnQn3WQf89mJQx37s/iqYz/JWeoffwUew1jidUeDxXgEX5ecW4KtWDqEfheykyqyj2YuwbMd+305m1Q9FFyP1yxMYVdjC34V8i9jKd7CigH2u5CdNJF9VLMIL5tfB03OWoqhYDeTygtrDfabOwZdiOxWXViwCu8ZzD9+VJzUkX2UswVnVZyrc9aSUFhj+BL395bjUWVGfWHBLmzus59RctJE9jGXe3FBx/6JJW2qnLUkFNZtxbGzu9peg6eFCd+m4tj52IP3S2JPC29aYtiB0yLbdjKjubCm8JPwuO+VKiekeZk2HCcpOUzJPtpsxAasLD5rK/KZUu6sJaGwXsH3NUnvxsc4HU8UyawraTddkWQZK/GG8EIihRnNhbWqaHN7YuxOmpwQ52XacJ3E5JB9BG7EEcFF5+fCkjhVzloSCusAPqlJdgv+xJPq73rT4qXBrfgU5yVcM6O5sJYVbXYkxO2myQlxXqYN10lMDtlHOlXOWorCilkIXoFvas5/WMT5HL80xNqEOyL6JEweVwvituIpQUq/HC62k33EaHJCvJdhOonJIftIp9FZTGE1LYrtL7YTEbEOClUdwx+CtEPCQt2RyOuaaMcpm5TGErNQGOtlmE5icsg+0ml0FlNYs+oniQ9iH67CMw2xnhce9zHcIyxgbxAmioPilGJ7sI8YTU6I9zJMJzE5ZB/pNDqLKaw9uLLi3F14SRhvth/fyzCO7+JyLOV6YV1kncE9qdqcWWw/6zg2hr8SYtQ5YTheUp3E5pB9pOdQ5mwOMV9p2oUz/LfavFoYB98sTAA/El4aTAh3jofxQ0mcWfwc0R/hjnKf9KJq3zXHa9pcVGzfLLY78ZuwfhFLtxN68zJoJ73kkH2k0+2skUnz3wqeJExM7y72p/Ajtne0WSyMX/coX8sYNpfjcfwt5P8cbqlou134WkqbV4vr9ib01+2EheGllxyyj3S6nbVpSfxK03p8UXJ81JjAt+aurBP+rhcSY/0fnGQf6VQ5o4fCIrz73zaY3I4JY3gdN5Wc2ywMG1IZZSfZRzp1zuixsOBRPNBfbseEceEt0NqSc2uEnwj0yig6yT7SqXPWpqWisGJ+mn+Z/tY8jgXn6n/too5Rc5J9pFPnrPGn+ZlMJpPJZDKZTCaT6Z1/AXRZhBNIdDr4AAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle \\left[ \\left( x \\mapsto 1 \\right), \\  \\left( x \\mapsto x \\right), \\  \\left( x \\mapsto x^{2} \\right)\\right]$"
      ],
      "text/plain": [
       "⎡                   2⎤\n",
       "⎣x ↦ 1, x ↦ x, x ↦ x ⎦"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "phi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "eqs = [q_rule.subs(f, phi[n]) - sympy.integrate(phi[n](X), (X, a, b)) for n in range(len(phi))]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left[ a - b + w_{0} + w_{1} + w_{2}, \\  \\frac{a^{2}}{2} + a w_{0} - \\frac{b^{2}}{2} + b w_{2} + w_{1} \\left(\\frac{a}{2} + \\frac{b}{2}\\right), \\  \\frac{a^{3}}{3} + a^{2} w_{0} - \\frac{b^{3}}{3} + b^{2} w_{2} + w_{1} \\left(\\frac{a}{2} + \\frac{b}{2}\\right)^{2}\\right]$"
      ],
      "text/plain": [
       "⎡                       2           2                       3            3    \n",
       "⎢                      a           b              ⎛a   b⎞  a     2      b     \n",
       "⎢a - b + w₀ + w₁ + w₂, ── + a⋅w₀ - ── + b⋅w₂ + w₁⋅⎜─ + ─⎟, ── + a ⋅w₀ - ── + b\n",
       "⎣                      2           2              ⎝2   2⎠  3            3     \n",
       "\n",
       "                 2⎤\n",
       "2         ⎛a   b⎞ ⎥\n",
       " ⋅w₂ + w₁⋅⎜─ + ─⎟ ⎥\n",
       "          ⎝2   2⎠ ⎦"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eqs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "w_sol = sympy.solve(eqs, w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left\\{ w_{0} : - \\frac{a}{6} + \\frac{b}{6}, \\  w_{1} : - \\frac{2 a}{3} + \\frac{2 b}{3}, \\  w_{2} : - \\frac{a}{6} + \\frac{b}{6}\\right\\}$"
      ],
      "text/plain": [
       "⎧      a   b        2⋅a   2⋅b        a   b⎫\n",
       "⎨w₀: - ─ + ─, w₁: - ─── + ───, w₂: - ─ + ─⎬\n",
       "⎩      6   6         3     3         6   6⎭"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "w_sol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle - \\frac{\\left(a - b\\right) \\left(f{\\left(a \\right)} + f{\\left(b \\right)} + 4 f{\\left(\\frac{a}{2} + \\frac{b}{2} \\right)}\\right)}{6}$"
      ],
      "text/plain": [
       "         ⎛                 ⎛a   b⎞⎞ \n",
       "-(a - b)⋅⎜f(a) + f(b) + 4⋅f⎜─ + ─⎟⎟ \n",
       "         ⎝                 ⎝2   2⎠⎠ \n",
       "────────────────────────────────────\n",
       "                 6                  "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "q_rule.subs(w_sol).simplify()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## SciPy `integrate`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Simple integration example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def f(x):\n",
    "    return np.exp(-x**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val, err = integrate.quad(f, -1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKcAAAATCAYAAAD1TR2PAAAABHNCSVQICAgIfAhkiAAABXhJREFUaIHt2WusHVUVB/Df7QNaHgIWUF5tSZAAVh79AC2ESkpUKBKJxmAjSGMMsZSEEJ4FiQVbCEIC+gGpAm0AtdVI0SihgnAlAhpRAkYwAgGKsVAelofyELh8WHvsnLlz5s7MOVeMOf9kcs6svfda/7Vmz15r72GAAf5HMbGibQre/m8R6QOG8GkswcewEx57Xxl1og2/ianvc33S936hyo9G2B5L8XwPOibjASwqaZuHm3AVbsVKTOvSbxgv41lcjw92sTcLD+IX2KtHfvNxIy7FNUnnnJJ+i/Aw3sDT+C527pHfrzFSuL7UUl8Tfhn6EZcmftSx+x8chWX4V1LYFivS+KKxT4q3J5uMQ1iLP4uXIsN8rMdxOAzLk751JbaOFBN4VdLXC7/j8Q/smpPNw2v4SE72FfxJxOrSxH8Ef8U2LfkdjvtxZe76BrZuoa8Jvzx6jUsTP+rYLcW92k/OI3BLibGJeBI3F/rPSn0vT/dDuMzokuMuvFKQ7Y5NIvhb9cgPforfl4x5AWek/1Nxp85gT8ZvjF4hmvD7GQ4Yo08dfU345dFrXDLU8aOu3VIMazc5t8fPsV+JsTlJ9vWScS8KR4cwQQS4iHUiwHmsTDoX9oEf/FhkjT1ysm3xJk5M9/PFal7EF5POc1vwO0ik31txttGrURN9Tfhl6EdcqO9HXbulGNZucq7EIZhZYmyh7sH5Y2rbp4ve6aLGyrdvjX/iXZyH34oAPpHuy1JeFT84Nskfxoyk4xr8RPXmkdicjKTfpvwuwDM6a7TrdK5+bfyt4pdHv+JSx48mdksxrPnk/CzOT//LjH0iyb5dMvae1Da3IJ+Az4mCfq1IaxmOSGM2izoMdsTqJF/RkF+GJXgHr+I+1YV8HudjAya15EfU4kvEBnAEP8y1tdFXxS/DeMSlyo+mdkdhWLPJuZtIuxMqjH1IpIGncv0y3J/6H1iQfxXfweOpfYMtG6fPJ9mVhTFbiU3X67m+dfjlcW0aP4LfiZW7CpPwKBbkZE34FTFNZIoRHNoHfWX8GP+4lPlR225xkrTFt3CmSDnd8ByuFmlhhQjYJJyCgxO5vxXGXIvF2Fekkb3w5dT2Tvr9e2HMW7hDnNMe1ICfxOcGkS6n40ciqPfprLeKOAffx205WRN+RbwodtxsqR970VfGj/GPS5kfte32Y3Kejl+JJXxKurIaY3K6z1LJUrGULxD1yzrx5k8UdedLXWxkddbbYqIStQ3lZ3fZA9ymBb95oph/XhT754oHcFEXbp9JHJYX5HX5dcMfxPHNlB71deM33nHp5kcTu6UYVj+tZ32rrmUV489OfU6tYWuTKLqJHf1m5fXMVUnn/g35PYQ1JfoeFOeGRRyNK7pwrcuvG4ZEfXdCD/qq+A0bv7hU+VHbbuUMrcB0Uf/BafhAoX03cXa1XHxJKKbrDDPESvqA+AJUhT2xg0gpRO2zBl8Qq+9bub77iQPnvzTk96bOg+YMjxudvj4uMsBZBflOoky5uya/bjhKHLavT/d1/a3Lb7ziMpYfvcwXxGQZEctsEeeltnMqxs809u5rO3Gw+4hOx3cQy/7FthT42ybSiws69hBp5sKcbJaojY5uwW8h/q2zPtpZpKD82eKR4oPCRfha7rpErCZZ6q3Dby424ge2nEbsLTYcxc+Ddf2ty6+ImdrHpYkfde12YK6Yve+mzt8TNUsep4hl+uQejM0RNedqo3eYU3G7ONPbmPp8E7O76NpHnLetFTv7W0R9VIUqfp/CL8X53BVJ7zG59tnC/24pqfgFbCx+u4gX7xXxsFeJF/PDXbiPpa8pvzxmah+Xpn6Mabfut+h+4SR8VGxs1ojPcAMMMMAAAwwwwAAD/H/jPYt7THqEjZDuAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle 1.493648265624854$"
      ],
      "text/plain": [
       "1.493648265624854"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 1.6582826951881447e-14$"
      ],
      "text/plain": [
       "1.6582826951881447e-14"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "err"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val, err = integrate.quadrature(f, -1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 1.4936482656450039$"
      ],
      "text/plain": [
       "1.4936482656450039"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 7.459897144457273e-10$"
      ],
      "text/plain": [
       "7.459897144457273e-10"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "err"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Extra arguments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def f(x, a, b, c):\n",
    "    return a * np.exp(-((x-b)/c)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val, err = integrate.quad(f, -1, 1, args=(1, 2, 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 1.2763068351022229$"
      ],
      "text/plain": [
       "1.2763068351022229"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOEAAAATCAYAAABm6WpoAAAABHNCSVQICAgIfAhkiAAAB1pJREFUeJzt2nusXUUVBvDf7QNaSyXYVm2B26soQali0EiLUq/UKAqmqDFSLVAQCSjGGEBEaUSB+qCIYlJAhTaoqKCCREUU8BqUR6g2oiBiUZFHBURtLS1UvPWPtbfdZ9/Z5+xzH+cGcr5k5+TMrL3WrG9mzayZ2XTRRRfjiolN6qbgqTG2X8dGDw7DB/Ay7IY/jnG7ypiY2X64w3ZHC+PN89Odv1YY9ViZjtPx6Ah0TMZaLBuhjXlYhx9izwqZhfgazsfVuBgzEnIH4zKswKpM5/wKnT/H9tJzVElmGe7AE7gPX8bMivYNYCP+hkvwnAq7OZrx144f48Ez9fjrxWqchQtwBeaWZFYl9OTPSMbnaKHdWGkVF6AfZ2KLcHS4OCd7P2Wsro2DxMBdLWbpFN4oZtd8MPTg27hTEJTjrfgnnlsoW4jNeHFJ54G4BSsLz1nYuSBzHH6b+bEis7cd9+BZBbmDcR0OxQE4O5O7qsKfHFX8teNHv87zTD3+5uIhjf6dgAcxO/s/HX/G53BK6blDTHrjiX7tx0qzuBiCX7ahuIzX4Hs1jDWzMQePiE7eqUJmouikr5fK52V6P1so+z5uT+j4Oz5UKrsGL61sNVNxvcZBNRm/0Djj9+DThqb8N2JTE/3N+GvHjxyd5JnW/BF+PKAx6CdiQ8HOMXhl4t1JYuV5QwsbnULdWKkbF//HQE3FZUzHD7BPDWPNbFyc1S1p8v78TOYTibrHxMDMO/lKMWPtXpCZhifxrkLZfiK9vFrMuOXVhVjdDkiUvydrz0ey/xNEwJZxlQjYFFrxV9ePIgZ0juc6/M3BoEipy7gc21SnufBmEYSTmsh0EgNax0rTfp0wyg1aieWiI4aLnbFUNLYXt4qBdy9Os6PDX5D9bk3ouE905F7Z/0tFQFwrUqEenCuI+U7hvUNFBy/O6u/BVzWuejfitoTNjdnvXdnvYKJtvehTPTm14q+uH3UwFjzX4W9BpvsPCX13i6ziwCbtPkKsKKmDkGlisjhP7L1v0rg9GC807dfRDMK3i7Rl3Qj1vEoQtwk3i5l4jiD0M2JfRczAsEdCx+bsd1b2ey1Owr74nUghbsU78N/CeyvEwcTMTP5hvBdrarR7Hu7HjxN1EzJbN4mBuSUhU4e/un7UwVjwXIe/3pLeIvIDjr0SdUQwLxYZQRkvFNw9gZPFwH8t9q7Q1SkMOy4GtJeOzhZpVh7UfYafjr4zK19ZKt9JdOpWsbw/T6RhfzF0Mrkl0/HyUvlF2fvbxWrWqzlmCPK249VN5Cbh93hLRf0JuBDrM11/1Xig0S5/7fgxoPM850jx97Hs/zEJ+WOzujMq9L1NOhWdgT+JvWaOC8TKOtZp64DqWKnVr6O1En4RHxYp2EiRz+gPlcq34afiTmY/MVC+INKycwTZk3A0XiGcfSB7d5JI5baIAXuFGBQ3a9xflfGYOAklvQ/McSq+gR9V1F+EE8WsvEqsFscW6uvyN1w/UhgLnstI8ZevgJMT8nnZ4xX6qlLRlSJtPkOk6ytESntIQnZA9bVH+TnOyFCrX0djljgJN4g7sClZWb4HmGzHRWbdy8z7s9/UnVs+YPI8/3T8A+8Wacq94nRuIn6d1eVyC0UQDIpDjLXi+Hu5WKmq8CtxLTClon5x1taTm+jIMSj2W8fbkSa1w99I/ChjLHhOoczfhuw3dfiSt2V9om6a+Jhgcal8Bo7M9B4uVp/rRUCmBv9R6u8TN7QWqcSI42JA/XQ0l232nNmGjan4F76ZqDs/e+clTdpzSiZzfKHsN/hWQnaduO9rhh78W3RwGYvEAUS7eESkZbTH33D8yPWXMRY8p1Dmb5ZYhS9NyF4mBmXqY4YlIhUtX/kcpvFUutMYkOY3L2/Zr8NdCXvFvgbej2eX6meLtOFs8RVGVbqSwlYx0I4Q+5Nthbp9xMHG3RXvzsVHxepwSaH8SY0X3DnWa53G9YuTz+tK5a8Te8DyCribSNN+VqFvD+wqUkna428kfpQxFjyn0K+Rv0eFT68vyU0Q1z/XSK+seSpaPoDKV5eNpfJdBM8PtmjfWGHEcbFWRGoqbz8tqzu1yft9Wh/MNLOxu+isjxfK5om90KIKfbuIi+y7DB2oS/Afjfu6mSJVyO/IFoj043JxSkjsM24z9LOwg8SJ13KR9uTPp8SqNFMMgBvwSTsOYaYJ8k+s8CFHnzR/dfwoo1M8t8Pf3iJolhbK3idW5tTJ6K7i1DPVpj3FhHK7Hae0i/Al1VuI0UQzfsvoU+OyfoGI0sFM+CuG5uBHi/TiyGEaq2MDXoTvis+jLhQzyMIKe/PFp0xrDP2MKseb8BNxb3VupveQQv0sESCbxKBeLQLo+SU9+wv/q1KM/IuPqeK64nExONeIvdv+Fe0rok81f638yNFpnuvyl2Nfcbf5eXHwc6VYgVNYJp2K5jhc3DtuFh9CfNDo34GXUZffIvok+rXqW8GnC5aKznxKpFZ3jm9znrHo8txFF1100UUXXXTRRRfPTPwP2sii0IVXA1oAAAAASUVORK5CYII=\n",
      "text/latex": [
       "$\\displaystyle 1.4169852348169507e-14$"
      ],
      "text/plain": [
       "1.4169852348169507e-14"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "err"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Reshuffle arguments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from scipy.special import jv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val, err = integrate.quad(lambda x: jv(0, x), 0, 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 0.7153119177847678$"
      ],
      "text/plain": [
       "0.7153119177847678"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 2.47260738289741e-14$"
      ],
      "text/plain": [
       "2.47260738289741e-14"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "err"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Infinite limits "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f = lambda x: np.exp(-x**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val, err = integrate.quad(f, -np.inf, np.inf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 1.7724538509055159$"
      ],
      "text/plain": [
       "1.7724538509055159"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 1.4202636780944923e-08$"
      ],
      "text/plain": [
       "1.4202636780944923e-08"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "err"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Singularity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f = lambda x: 1/np.sqrt(abs(x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "a, b = -1, 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/rob/miniconda3/envs/py3.6/lib/python3.6/site-packages/ipykernel_launcher.py:1: RuntimeWarning: divide by zero encountered in double_scalars\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEYAAAAWCAYAAAB9oOpzAAAABHNCSVQICAgIfAhkiAAAAvJJREFUWIXt102oVVUUB/BfvetHCllqplZPIxQ1SMXUQUSENClokGBTIWkUFIQNdKCog0pJMTV4BA4qg15ZOCkqqomUUMlFxBDFjyzCFInQokwbrH275x3Ped6v46T3n2zOOnv913+vs9fe6zCCtjEON/eY8w68gdU4jPt7zN+Ojt3D6Shb+EPYgL6M7QX8jOkdiqnhE3yI7bi7SFAL6JWOLzER/a3qWI73DU0KbMTfmNuhoGdwJPM8qkOeXuqYiI8x7XpOS3EcEwre1VohGAbfYUsX/lXpmI8vXLsR/kOfyORzXQQtwyxcxVMVcPdCx16sKXNakZzytfswXsSbaQ6MxloM4pio0+nYh0t4Nc2bg7fFAXcV76bnBe2vqVIdK3EB44sCv4ezBfYxeC0RLsnYJ+EHHMRU7MJMHMWBHMcH+LF0ya2hSh3zE+/TRYFP4PsSUYM4Z+gtVsNv2IStGJvsv2Ag5386cXSLqnRMEonZ0TBkA0zDxQKnPizDp7iSsS/FrZiRCP/EbNyJzzLzpuAefFPA3Q6q1PF7Gmc2DNnE3FQiaAluF9daFo+JLB8QN1nD9g8+z8xbnMZuE1OljstpHF0U+LSo0zzWiy80JWffLxqtLNlH+LrA/y/NLd4pqtQxXiR3T8OQ3THf4q4Cp2UiYWc1m6oJ4gu+k4IRW/1RsdXHanaTD6IutngWpX1DCarSQTPZ9YYhm5i94h8i3zwtwld4VtwMUuBa8mngAVHrddETnMoI2p/j3IM/EmerqEJHA/PSuK/o5RicwaqcvY6TeCJj24lfDU3sDJwXNdyfbP1iiz6Z4xwUZXGoRGgRqtDRwDbXnl1DsFw0QbU2BA+HFeLEv6XgXQ1v9ShONzom4yfRFQ+LzXi5CxHZ4AN4vWTeGp11wL3U0Sf+9h9vlXQdnu9QUB0v4TbRpudvEaL3WNghf690jBIN4SNFzmW9C3Hv1zVP+1bxCu4TtT+guAW4EbiejntFeZ27wbpGMIL/E/4F97jSVYzC+i4AAAAASUVORK5CYII=\n",
      "text/latex": [
       "$\\displaystyle \\left( inf, \\  inf\\right)$"
      ],
      "text/plain": [
       "(inf, inf)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.quad(f, a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 3.9999999999999813, \\  5.684341886080802e-14\\right)$"
      ],
      "text/plain": [
       "(3.9999999999999813, 5.684341886080802e-14)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.quad(f, a, b, points=[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(8, 3))\n",
    "\n",
    "x = np.linspace(a, b, 10000)\n",
    "ax.plot(x, f(x), lw=2)\n",
    "ax.fill_between(x, f(x), color='green', alpha=0.5)\n",
    "ax.set_xlabel(\"$x$\", fontsize=18)\n",
    "ax.set_ylabel(\"$f(x)$\", fontsize=18)\n",
    "ax.set_ylim(0, 25)\n",
    "ax.set_xlim(-1, 1)\n",
    "\n",
    "fig.tight_layout()\n",
    "fig.savefig(\"ch8-diverging-integrand.pdf\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tabulated integrand"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f = lambda x: np.sqrt(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "a, b = 0, 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x = np.linspace(a, b, 25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "y = f(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(8, 3))\n",
    "ax.plot(x, y, 'bo')\n",
    "xx = np.linspace(a, b, 500)\n",
    "ax.plot(xx, f(xx), 'b-')\n",
    "ax.fill_between(xx, f(xx), color='green', alpha=0.5)\n",
    "ax.set_xlabel(r\"$x$\", fontsize=18)\n",
    "ax.set_ylabel(r\"$f(x)$\", fontsize=18)\n",
    "fig.tight_layout()\n",
    "fig.savefig(\"ch8-tabulated-integrand.pdf\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val_trapz = integrate.trapz(y, x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAALAAAAASCAYAAAD7Y1S7AAAABHNCSVQICAgIfAhkiAAABONJREFUaIHt2mnMHVMYB/BfF1qaBmkJbbQRW0OlCUntVSqxpCWC0NiFIP2A2EsFxQcaER9qjSL2LUhILIlXorRBiCXEEqH2fatqqfrwzHDf6dx750znLZL7TyaT+5xn/s+c/5w55znPXHro4X+MIR3ahuOPtXUj/1E0rUEVvkGYjlnYARvhvYbiD8k4v2yI79+K25FvJC7A14mk++AOXIn5eBy7rIHfOCzAXFyH+zF+DfiOx+v4DR/hJoxu05duGszHqjZH2TVVNZ2IV7M+bN7Gp6ou8FzJ/R1bk6+qzk3HrcoHpuIS/Jo5VcUMfI9NWmxT8Au2ruE3Hp+JQZfjVHyKzWrwnYQ3RN+uxFuif+9i/UJfpuqswUh8iKtwduF4XbwYKXw59sSP4qEOauNTVRfYDS9iXssxF8Nq8FXVuem4VflWw0JpA/hRvFRi/wan1/T7RP8HOQSf485EvvXwjP4dXgfP6/Ama6/BCdipxD5UzLD7JvLBGHwlXqx12/hQXRd4DNt14Erhq/rcmo5blW819EkbwA+IGWZsi20EluOIRL8x+FMsV0XcjRUYlcC3D3Yu4TpK9PHcNn3qk6bBAWIAD63Bd2PWNrMDf4ouk0Sq9IhYGYqzZCpf1efbdNwqfKXok/7wVokldLx4s+bjIf03ilX8Ds18LiyJc3HWNiMxbhmmZ9dOb9PeJ02D28VAbId2fMOwVDzU87BIDJYPst/5LJWiy2ws0T9nvEX/VWggdG46bhW+UvRJe3jErnklfsYL2i/N3fzOzGKfUnLtaVnbGTXiFnE+PlZvxixiGH7QPn3oxLd7Zv9B5MGwIW7L7FdktlRdiJlsFr7I2u9paRtInZuM242vFH3SBzDcgGXZtYvFTjPVb3ZmP6HkuhOztotqxs0xFG/jwA4+faprcIjO6UMnvsMz+7yCfV1RJlomNo51dMkxSlQ3VmFyZlsbOjcVty3f4C43UBVDcatY+saJkshk8aaOTfT7JjuvUxInty1NjFvEObgLT1TpXAUciYfVqxmvzM6fFewr8LSoHU+SpksR34pKDP/sB9aGzmsatytfUwP4AlFWOVvMREeIzdFYzEn0+zw7j7I68rrt+4lxW3FwxnN51c51wQiRRz9Q8/ol2bmsJp0P6vWl6VKGV0QpbHj2e6B1biJuV76mBvBheFlsRHJcjddEjpfityhrL9txbitmrIWJcXNMwx44q1uHEnCQmJmerXn9m6L+u0VJWz4jLZGmSxkGZXz5V72B1LmpuF356g7gYu6zXP8id473RdKf4ve1+Mqzd8FnsCiJPYbvEuPCXiLnPadg36gkVgry9GFlN8c2WIZ7xU6/WAOeID62vCNNlzJMFS/Kk9nvgdK5ybhV+ErxskiUy/KU87K21oEwE7/rX28dLXaNM2v4bZPd5NEttpPFTn3LGnx7iq9nc8QGIT8uE5uCsuW7kwY5NhB1ymkdfKrwjRUPtrW0NFHM7K3cVXTZVSzTd4uaKzG7L7b6p98mdW46bgrf39hV5IZ/CrFvFjljK44Tb90xBft+eErU6a7Gfdi/JEZVv+3xIK7BtSLHnFCDb8fsftv9d6H45aeKBjmOFwOvU825Kt9Woq56H64Xs/qUEr9uumwsZrifxABbgEuxaZv7a0rnpuOm8vXQQw899NBDDz1UxV/E8FiBq/RXegAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle 1.8808217160508505$"
      ],
      "text/plain": [
       "1.8808217160508505"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_trapz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val_simps = integrate.simps(y, x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 1.883665102448715$"
      ],
      "text/plain": [
       "1.883665102448715"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_simps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val_exact = 2.0/3.0 * (b-a)**(3.0/2.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 1.8856180831641267$"
      ],
      "text/plain": [
       "1.8856180831641267"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_exact"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 0.004796367113276245$"
      ],
      "text/plain": [
       "0.004796367113276245"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_exact - val_trapz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 0.001952980715411723$"
      ],
      "text/plain": [
       "0.001952980715411723"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_exact - val_simps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x = np.linspace(a, b, 1 + 2**6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABUAAAASCAYAAAC0EpUuAAAABHNCSVQICAgIfAhkiAAAAWlJREFUOI3t0z1IllEUB/Df24cfgVCYBIqDUIsobZWFg7S2OrQ0hJurIOTcEBS4VdDQVLSEiPIOTjbpIC46SLhkZCWWDmZIZcM9yfPenldd2vrDw733nP/5uOf5X/4BTtaxV3ALw+jFObw9Rq5efCpz9mAR0+g8JMks9rPvDpzKiP2YwmvcDWIZrqMBjwq2XbzKie34jOUIOAyT6D6CA55GZ7eP4F3Gd0xgBJfqERuxg18YxRy+YTXOlQL3HtbUzvJZ5KjBjXBuSXOFs3ge9vsljbRK6vgYnJc5YTAcDzN7gySRXbTUuWWrpJZ9XIET4fgZ64csYA8zaJJmWYZNDMX+ajHpWqznS4L+FDpTJyks4GsUP0i6hG10lQSczgqXoRK8v17dE+lH5RqtYkWtAnIM4D2ac0cHNjBWsPVI0roZ5z6s44X0WEi3m8e1YttFXMQD/MAXXMA43oS/TZJZfxSr4h0eS9L6D34DkbxOYjJgELYAAAAASUVORK5CYII=\n",
      "text/latex": [
       "$\\displaystyle 65$"
      ],
      "text/plain": [
       "65"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "y = f(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAANgAAAATCAYAAADyD8OaAAAABHNCSVQICAgIfAhkiAAABt5JREFUeJzt2nmMX1UVB/DPdKGtpTFIa6SFaYlIlNZg0CDFMEo1bqi4JGpjkboRiSRGw+LWiBZwAUVNVBBsCSIuVbaodSVj3FDQarVEUWMMCLZQlQoItVb/OO/ZN2/u+829v/kpBn/f5OXN3Hfu997zzjn3nXPvjyGGGOI/hpkP9gSGeEhjLvb8j/KN4Hl4Ax6PA/DrAXHPrDi3tx+MYiPW4yP4PJZmkub2HbTcGMZxN/6IT+IRLZmP4Z8d150t2VW4HOdV/b6MY6bBN4ZP4UJcg4txYEKPnHHbmI2bsDbxbC224n78Hp/AwmnI5eoBC/BWk99Fm29cb7uV8JX47gpsEe/4kB7zy9X32yb7wSvbQktxu4nGej3+gIM6iEv7DlpuFb6GE/BknCOUu7ohswC/w/txeuvaKhyqxvPxZzyy0TaGe/CYPvieKVax2jAj+By2VTwl46ZwbqXv2lb7a/FznC0Cdlsldwse1odcrh7wtIrvvoorhRy7lfCV+O5xIqg3VnqkUKLvsfgBLmhc6zGnTXotbmsNOhN34IqOiZT2HaTcCN5jcpp7PXY1/n8VnpiY8yyxIj6jNe6NCdm78MZCvpkiENvvboVwlPcVjtvGU3CVyQE2D9800cCz8V0TV9ZcuRI9mviedEDk2i2Xj3y/WowdIlD26+Aq1fc6HNFj3v8eeK9IUdq4Ert1fx5z+w5aboZwkjauFk4yFZ4jAmJWo22TWCmXNNrm4wG8rJDvGGGQdyZkd4rgqR2idNwF+BIea3KArRJfhTZeUcmeWShXokcT49IB0a/duvhKfPfiimN1j3FK9D1SpNbXiAxmUrYxo7qvrDr9KkH6S7GyHdsxody+g5bbi7+1no9imXRN0sbLxRegWTRvEMbfLNKOEZwvnPkLhXyHVvf2HIla50A8us9xL8A6Ydw2rscPE+13V/ebC+VK9MjBdO3WRq6/zMEaETyjuEEsar/FWfYFTYm+J4hF9URhr1twqUZWUAfYaHW/K0FaF5ZdLzG376DlmpiBl+A7Qsn7OuZaY454KZta7ZtxGpbjFyItuaHi/kchXz3/gxPy91T3RX2M+2KRwmzpMZ8UVuBWfLVQrkSPUpTaLYVcf3mSqCt34fviS7W4Gvu9og5s8uToe57YJFko7Lcdr8FldYc6wOpP9u4E6QPVff/Es5K+g5Zr4hRR+/wdLxXO2S5Gm3huJTueePZRXCJSvZViG3c0ITcV31ahwwvse881Zlf3ewvHPQgniQ2WEszCyaLw77XNnZIr1aMEpXZLIddfFld/XyqCCv5SzWEH3lyN3Y++O4X9luOnIps5WoOgjtrZJmOql5jbd9ByTVyEU3G42OI+BK/umC/p9JBwsA1iJR0VW71HixVviW6k+LbjQyLlO7firh34CSJVua1w3A/jTSLNKsEZ+DS+0odciR6lKLVbCrn+UmcCt7dkduMb4oztSNPTd6fYmaWqb+sAu6O6pzYy6jOR33SQ5vYdtFwKe0U+vUcYLYX54oCxnR4SZy1jomC9U2wwnCmcfF2ffG8RX7itopDfT+xU/QR/Khj3NHxLnBnNra46159d/d/csKlxonhv5ySe5crl6tEvcuzWhVx/ubXV1kQddPXRxHT0/bE4cpnbbFwkInxDosPlQvGuQ8DcvoOW64UdeFvHs9XCiVO/YvkZPpto3yLOi0r5UjhdrIKnFI47rvtwu77ObvV/uii+p0KuXBMpPZqo51uCXnbr4sv1l3kiJfxMQu7CivtxPeY2lb41RvBXvLD94DpRPDcxQ3wOr2q1t2uD3L6DlkvhYJF7H9bx/FqxXZvCj8TuWhubRLpWytfGUpHS3GhiQOaMe4QozJvXi4TR11f/Nwvzp+IDCc4DcHwfcjl6NDGuLMCmslsvvlx/uUgEWfsMbLPYhew6eM7Rt8bx1biTjiIOF1u0axptr6sm1Ny1O0soekYffQcp93CRMr3LvsJ4vvj5y6lt5Rp97hcrdgqrRcHdPB9aKNKy1NnJVHxN7C8MdLOJv9joZ9way6R/yXGccLh1eEfjerf4Ki4slMvVo4mbqrm1a6N+7NaLj3y/WiKyjbc32laI2rfLhl36rhTp6ZX2baAcKo4+On/itlycu3xQFHqbxGFmEyeLT+BJffQdpNw8sZV8b6XoZWJ37agu5YQjTpXOPQtfF7tN54ufyDx7GnzEC99azbFrl6xk3BrLTA6wo4R9utLIKwrlSvVYKeq4vRXPJaK+q1Fqt6n4auT61WH4oni/HxdfuLGOsXvpu0gsCrvEQrhRLBqPagp1fRKHGAzWCMPvETXWtgd3On3joaJHLv7f9B1iiCGGGGKIIYYY4r+HfwGMSssQ/9/OhwAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle 0.00037879842291310695$"
      ],
      "text/plain": [
       "0.00037879842291310695"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_exact - integrate.romb(y, dx=(x[1]-x[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAM4AAAASCAYAAAAT4+GQAAAABHNCSVQICAgIfAhkiAAABQRJREFUaIHt2mmoVVUUB/Cf+h6NFqUJJb2MKKKiwcCyqMz6Uik2fCgp4jVBhBBRGo1Ymh+qL/UhKqJB0qJoUBqh6AWNZElWBGJEo4aWRfNoH9a5vPPuO+fefa7nGsT9w+Fy9/2vtf57nbv3XmfvQw899NDD/wzjcOh/wGuH7Svy64qbiqr6KmNs0/cBPIBFuBOPYZ9EX6m2dfPy6McqDG4FbyaWYgnuwrM4ehv5exVbctdfOHwb8FL6AeNxDb5o4SM1bmpeBrEGv+Ez3IuJHeq7q0lX/trYoT774Gsjk3YpvsKeJUKq2tbNa8YtIgmDLTiteLOxGZNybcfjJ+zfZX/H4E3cnrsWYbsu81L6ATOwEL9knDKkxE3Ny8X4IIu7BB9lsddix4r6xuNT3Iqrmq41YkBW1QdW4EuMybWNw3o8XCCkE9u6eXkciye1HziteCvwToHNJlzeZX8rcVBJjG7yGkjN3+taD5yUuCl52QEvGTng+vFaFv/8ivouwJEF7X1itTm5oj6wF/4RS1MzluMPTCgRmmpbNy+P8XgGB2p949vxHhcz1uRc2074HWd30d9hohR5WsyAZatb3bzUfuQxpHzgpMZNyctMHFVge24Wf0EH+opwihg4fRX1gbOyYNcVOL4x+212SeBU27p5edyDIzBF6xvfjndK1r5GlItjRH37hFjxuuXvWlGX52vu+4wuq+rmpfYjjyHlf8zUuFXznMeszHZWB/qK8JDofyV9jc2BgexzU4HjxkPTfiWBU23r5jVwpqhdV5foq8J7HvNwMD4Uy/5bYjD/3UV/S7C3eOidh29wER5s8lc3L7UfqUiNWyXPzThEDM4XatC7HeaIFaYjfdeKEXZBgfMLs9+uLwmeals3j9goeMrwBDBF8YyZymvgbvyacd42PJi75a8ZE8QfeQumdZFXtR9Um9Hb6aualz58jFNr0neG0WVakr5Gwhqze3+BcaPt5xLnqbZ18+AOXCGeiVohldeH+0V9OyC2wKfhDSPr3br9NeNbsaNEcZ1fFy+1H52iLG6neZmPZXiuJn3niA2Rv5ra2+prDJz12WfRBkBjz3xdSfBU27p58/AyNogDr+0N19L92fe+CjziDOB48WC7UTwILhDJuiHj1O2vDO+KLdF2h3md8qr0Y2tQpK+TvMwR939xDZqIh/1ZRpdplfTtIWq3+wucLBUjcvcSAam2dfOGlB9mNa6FFXjwPh4tiLtanCfogr8yjMGPOL1LvCHp/cijYZeKIn1V83ISbkuMl6pvrhgURZsRbfU1ZpSN4mT0xCbiWLEtuBLf5doH8HkHtnXyLsMuTZw9xdK7OPPxpVhmU3jEduMko7HOcAmRGjfVXxlm4Ae82CVelX5sDYr0VcnLCeKZ5sqm9t3E2wivdKirUaYVbUZUum8HiA6el2u7BN8buYt1tRjR8zuwrZvXjCnS3hwo483Fn0bW4xNFOTO3S/6mi/J0uTjDgn3Fw2j+FY+6eVX6kceqjNP8DFolbmqejxM7fjeIDaHGdbOY/YtevSnTl8eu4rzppJLf2+rL17BrxesSN2GqmOEni05/kuNtEK8ebOjAtm5e3XhErGaLxIq6Wayugzrb/kzxtw7viXp7ptgK/VzU9Pkc182riuk4TdwP4lzjGXHKXjVuSl6mik2AncVAacYyI48s2unL4wxRPg6V9LXu/0EPPfTQQw899NBDD9sO/wLoW7zTw+I87gAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle 0.0004484855541582178$"
      ],
      "text/plain": [
       "0.0004484855541582178"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_exact - integrate.simps(y, dx=x[1]-x[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Higher dimension"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def f(x):\n",
    "    return np.exp(-x**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 160 µs, sys: 40 µs, total: 200 µs\n",
      "Wall time: 214 µs\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.8820813907624215, \\  9.793070696178202e-15\\right)$"
      ],
      "text/plain": [
       "(0.8820813907624215, 9.793070696178202e-15)"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time integrate.quad(f, a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def f(x, y):\n",
    "    return np.exp(-x**2-y**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "a, b = 0, 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "g = lambda x: 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "h = lambda x: 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaAAAAAVCAYAAAAARjorAAAABHNCSVQICAgIfAhkiAAACm1JREFUeJztnHuQV1UdwD/sLiCtDNVCJfhYykyN0rJSInHDXiSOIFPOTohr43PUKRt0ATMpykdoGr2kh5QZBeQWjU5NU83NHlaYTDS9LZRMe2iRllEZ2x/fc+Ps/Z1zz/fce3+7TJzPzG9gz/3e8/g+zj2veyGRSCQSiX2MpwAdbcq7E3hhg3KjyThgAfB+4DLglDGoQ9N6CeV3QINlJaqzv9khtr2jHRf7C3Xs0I30mVHMAa4Hxpu/DwXWA6uBtcAm4LCI/L4JDBd+SyvIfdhxPf/9qYJckfHAPcCA5/osYBtwJ3CIR2YA2A7sBh4APgpMdcjNA24Frjb1vRM4wZOnRn9zgQz4K/B74BPA02vkBzAZWEG5zrS+oa2fRq6qfbXE2KbIADr7zwU+DdwIfBFYB/R48tTYoZ16K4sLrV1jdKppL4xdXOSU6UUbF3V8rd00YYfpwDV4dN7lSFsM9ANnAP9BlHY3sBL4pJG5APgu8BLg4UDlXg5MAG6w0v4BbIyUmwzMB9YAfyzcuxT4XqSci1XAcZ5rJwJ3AEPAmxElFzkHeAtwu2nLacC5QB9wLPCEkTsVcbrnWXWcC3wNeBHwKytPjf7mAYNImx8x+V+BGH1RoY5ae/SZ3+XAJEdbQe8b2vpp5OrYV0OMbYpo7f8a5OFzNPAoMkL8HHAX0vk8buXZR9gO7dbbKtxxobVrjE77CLcXxi4ubFbh1os2Lur4Wrvpoxk7PITo/zNIv1n6vDge+DUwxUrbAjzIyGlUp8nottImCF9CAq2u3Nm4jd2FPKFfFSlXZA7ycBmmdUQzHXGQnyDKdjEJcZyJVtp44Nu0jqS2AFsdeTyCdGA2Ib2MQ0YYnYX0bwCPOeS19sj5Du6HLeh8Q1s/rVxV+2qJsY2N1v6dwA5aY2eWkbvOk7/PDu3Wmy8uYvyuik7L/A7GPi7K+gttn1nV10aTunbIOQbRfdEe/6MT+BlwsZU2HdiDPKWLbAD+hX/ZIC90N7LEsAx4bk05F/ORAHLN5rRyk5HZzZG4HWqdSe8vyX8e8gAv8iZz7+VW2mZkNDzDSusG/onMPHM0eunAPUL5AtL52VTRc4bbAbW+oa1fTDtcaP0ghNY2RbT2P8H8fZVD9lGk83GtmWe47dBOvZXFRUy5VXSa4e/4xjouyvQS02dW9bXRJKOeHWyGkFmhkzeagqZbaYtN2hUO+XeYa6eWFLgS+C0j1wY/zshRYoyci08hD4g6cuuQKW8vrQ41Efg74lSDyFLFE8hMcZDwBtsCk+cCK22+SduOTNfHIeu/tzNyhFBVL4cie1WHF9Kr5JfhdsA6vuGrX1U50PtBCK1ttBTt30/rgCTnXnPN1d6M8pGoTVN6K4uLmHKr6DTD396xjosyvcTERaxeupGByw3IXta3kMNi7SSjOTsMAH9B2tHCJlrXhi81mZ7vkL/QXHurr+YWPcBFyCbgMPDZmnI5E4FdhJddyuROB5ab//fS6lBzTNouZB8I4KnI2u4w8J5A2cuBnbSOMC9C9tgeR9aGyzY7tXrpQALgAWQNdrpHLkbPGW4HrOIb2vpp5XK0fqAlxjYhivZ/NaKbtQ7Zu8y12Y5rGeEHUJN6C8VFbLmxOs0It3cs4iKkl9i40Orl2cAvkUEvwFEmr2M98k2R0ZwdjjHXnbO7HcgIzGalueFsh3y+Ef/2QOWKFd1m7ntZA3KL0C27+OQOQqbk+XHzXlod6g0m7frCvROAPyAbbpM95XYhy5qv91y/2dw/DHwfGaGVEdLLBcBHgPuMzM6SumnyA78DVvENbf1i26H1gxhibePCZf9nIkss99P6msPdpjzX0d+McEfQlN40cVGl3BidZuhnfKMVFxq9VImLkF56gN8ge0Y5a4Gf06zPu8hozg495toHXTfvRqZ0NueZG85zyJ9vrl2qrFzOcea+SxqQ24hu2cUntwlxopxeWh3qdJP2Nsf9t5lrr/CUuwL3A7oLuAV4HzDN1G8Y2bic4ZC30eilA/iQkQttZobyy3A7YB3f0NZPK6f1Aw11bFPEZ//rTJ7XmPK6gLOQTmgP7iOrGfqOoK7eNHERU24VnWbo2wujExcavcTEhVYv6036C5B9rauR4992XWwyRi6Llf3O8eRRzEtLmR0mmGt35An2CMy1l5EfmXMdNMjfbbgvonIAP0TWAUMvN4XkupF19c2BfHxyFwNfR6aNB5hfvnY53vzdhaxxgvtdjofMv6512NPMPe92XFuBHLdchoxAz0D2BGYAVwbao9Ffvl/1JHBEA/m5qOMb2vpp5LR+oKWObWxC9l+OzIy2I6PqCci6/73AnyvWPaeO3rRxEVNuUzoto91xodVLTFxo9NIDnGnyXYjs/9yDzDDu99R9KbJEp/k1FTc5ZXZ40vzrPEm8E5k+2UxD1idvccjfajL0vdTlYxyy3rmwplw/YrTQxrBPLiM8OliFjDh24V7XvNHIHVVIPxk5++7jR8h7H0W2AT8uuQ/0+gPZ0/OeOlHml+EeATXhG5r6heS0fqCljm1yQvZ3sQz/yBniR6JQTW95OaG4iCm3ik7zemhpd1zk9QnpJSYuNHrJD7G4Dq2MBhnN2aHb5LXBdeMQrYcQQM557yikdSDTxKFCumad/JXm3rKXmzRyW9Atu/jkjkaOxNq/RYiCVpu/DzayNyMPoeKT+8vALxg5ezyJkS9l5TwNaRPAD5Az8UU2IxuRZWj1dzCy1xA6CRXKL8PvgDG+UbV+IbmQH8Q+mGJs4/J3jf2LHIYcv95KtVNhLqrqLSYutOVW8feMuPa2Oy5i9KKNC41e8lN1xUMNBxK/JFyFjObsMNPkNei4xhJz8aBC+hHIZyyWWGnnIh3yc6y0QXP/Zebv2ci0cQN7T53MRDbZ7E9NaOVspiB7Vid7rsfK5fTiXuuegYwW7aOVs5Dj2HbeJyKOdyWy9p//3oWMavIpeD/wb0a+NzIVmd7n7xpp9TIFWRp4J3s3VruRT3pcaMlV0TPIdH+YvZ9lstH4hrZ+WjkK95TZN3/vwjercKGxDbT6O+jtb3Mg8uD5KfCMknr57NAOvRXppTUuYsrV6tTG1959JS7A319o+0yNXg5B9ga3IrMrELt9gNH5NmBdO9icgnvFCJD1zAdxb0o9H/g8sll2E/KEPrIgcxYy9TrT/D0NMfZjiELXI87wrMJ9WjmbAXTLLlq5nF78m62HI+fzNyInaoaQ9ducFyPt903Pi2++vxb4KnJufo3J93XWda1eJgFfQd5Vehg5Hv5eUx+bWD3PRvYv9pj6fwzZ1ygS8g1t/bRyNgOU23ezqb926SwnZBto9fdY+4ME6nakrb5TWSE7tENvRXppjYvYcjU6hXB7xzoubHrx9xeaPhN0elmIrLT8DXmJ9hLa96HonKbsYHMTsmrkZTHyuZl2H+1LJEaLLuS7a/sSS5ATcKuRjiqR+H9nKvA7FF9fWQNc2/bqJBKjw0ra/7JeIpHw04mc9PS9D9nCVew7H8NLJKpyPPLJlEQiMTaMR04LnxR740vxf/k5kUgkEokQM3EfvkkkEolEIpFIJBKJ/Yz/AkT/5p5q0I5kAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.5577462853510337, \\  8.291374381535408e-15\\right)$"
      ],
      "text/plain": [
       "(0.5577462853510337, 8.291374381535408e-15)"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.dblquad(f, a, b, g, h)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.5577462853510337, \\  8.291374381535408e-15\\right)$"
      ],
      "text/plain": [
       "(0.5577462853510337, 8.291374381535408e-15)"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.dblquad(lambda x, y: np.exp(-x**2-y**2), 0, 1, lambda x: 0, lambda x: 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(6, 5))\n",
    "\n",
    "x = y = np.linspace(-1.25, 1.25, 75)\n",
    "X, Y = np.meshgrid(x, y)\n",
    "\n",
    "c = ax.contour(X, Y, f(X, Y), 15, cmap=mpl.cm.RdBu, vmin=-1, vmax=1)\n",
    "\n",
    "bound_rect = plt.Rectangle((0, 0), 1, 1,\n",
    "                           facecolor=\"grey\")\n",
    "ax.add_patch(bound_rect)\n",
    "\n",
    "ax.axis('tight')\n",
    "ax.set_xlabel('$x$', fontsize=18)\n",
    "ax.set_ylabel('$y$', fontsize=18)\n",
    "\n",
    "fig.tight_layout()\n",
    "fig.savefig(\"ch8-multi-dim-integrand.pdf\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.7320931000008094, \\  1.6564972931774035e-14\\right)$"
      ],
      "text/plain": [
       "(0.7320931000008094, 1.6564972931774035e-14)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.dblquad(f, 0, 1, lambda x: -1 + x, lambda x: 1 - x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def f(x, y, z):\n",
    "    return np.exp(-x**2-y**2-z**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.4165383858866382, \\  8.291335287314424e-15\\right)$"
      ],
      "text/plain": [
       "(0.4165383858866382, 8.291335287314424e-15)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.tplquad(f, 0, 1, lambda x : 0, lambda x : 1, lambda x, y : 0, lambda x, y : 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.4165383858866382, \\  8.291335287314424e-15\\right)$"
      ],
      "text/plain": [
       "(0.4165383858866382, 8.291335287314424e-15)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.nquad(f, [(0, 1), (0, 1), (0, 1)])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### nquad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def f(*args):\n",
    "    return  np.exp(-np.sum(np.array(args)**2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 677 µs, sys: 79 µs, total: 756 µs\n",
      "Wall time: 767 µs\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.7468241328124271, \\  8.291413475940725e-15\\right)$"
      ],
      "text/plain": [
       "(0.7468241328124271, 8.291413475940725e-15)"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time integrate.nquad(f, [(0,1)] * 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 8.53 ms, sys: 690 µs, total: 9.22 ms\n",
      "Wall time: 8.75 ms\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.5577462853510337, \\  8.291374381535408e-15\\right)$"
      ],
      "text/plain": [
       "(0.5577462853510337, 8.291374381535408e-15)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time integrate.nquad(f, [(0,1)] * 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 169 ms, sys: 3.38 ms, total: 172 ms\n",
      "Wall time: 171 ms\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.4165383858866382, \\  8.291335287314424e-15\\right)$"
      ],
      "text/plain": [
       "(0.4165383858866382, 8.291335287314424e-15)"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time integrate.nquad(f, [(0,1)] * 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 3.31 s, sys: 14.7 ms, total: 3.32 s\n",
      "Wall time: 3.32 s\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.31108091882287664, \\  8.291296193277774e-15\\right)$"
      ],
      "text/plain": [
       "(0.31108091882287664, 8.291296193277774e-15)"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time integrate.nquad(f, [(0,1)] * 4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1min 9s, sys: 237 ms, total: 1min 9s\n",
      "Wall time: 1min 9s\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.23232273743438786, \\  8.29125709942545e-15\\right)$"
      ],
      "text/plain": [
       "(0.23232273743438786, 8.29125709942545e-15)"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time integrate.nquad(f, [(0,1)] * 5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Monte Carlo integration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from skmonaco import mcquad"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 2.01 s, sys: 160 ms, total: 2.17 s\n",
      "Wall time: 2.05 s\n"
     ]
    }
   ],
   "source": [
    "%time val, err = mcquad(f, xl=np.zeros(5), xu=np.ones(5), npoints=100000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.2315775914499913, \\  0.00047512221420657915\\right)$"
      ],
      "text/plain": [
       "(0.2315775914499913, 0.00047512221420657915)"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val, err"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1.93 s, sys: 101 ms, total: 2.03 s\n",
      "Wall time: 1.96 s\n"
     ]
    }
   ],
   "source": [
    "%time val, err = mcquad(f, xl=np.zeros(10), xu=np.ones(10), npoints=100000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.0540332249061147, \\  0.0001721803643623528\\right)$"
      ],
      "text/plain": [
       "(0.0540332249061147, 0.0001721803643623528)"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val, err"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Symbolic and multi-precision quadrature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x = sympy.symbols(\"x\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f = 2 * sympy.sqrt(1-x**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "a, b = -1, 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sympy.plot(f, (x, -2, 2));"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val_sym = sympy.integrate(f, (x, a, b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAYAAABy6+R8AAAABHNCSVQICAgIfAhkiAAAALZJREFUKJHN0KFuQmEMhuFnhKDQqDESLoAEicLsErgAHHKZnyKZWMBhJzAIDEhwXAOCK8DgSGDZQgIb4lScHMExEzRp2v753/Zr+QerYYIdfvGX8REUU0AVA2xRwQdOeME0Gs2yU9oRO1hHXscBpTyJS7xH/oZ5HvCEC1pRb9DLg/oS7QU0JMvXbwFNfGGYkvaDBzzjMQt0cca35IrwGZNWGKc/FyKWsQ94G28LyeWOeM3b647sCkwxJXsTcbx7AAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle \\pi$"
      ],
      "text/plain": [
       "π"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_sym"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "mpmath.mp.dps = 75"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f_mpmath = sympy.lambdify(x, f, 'mpmath')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "val = mpmath.quad(f_mpmath, (a, b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 3.14159265358979323846264338327950288419716939937510582097494459230781640629$"
      ],
      "text/plain": [
       "3.14159265358979323846264338327950288419716939937510582097494459230781640629"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.sympify(val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 6.90893484407555570030908149024031965689280029154902510801896277613487344253 \\cdot 10^{-77}$"
      ],
      "text/plain": [
       "6.908934844075555700309081490240319656892800291549025108018962776134873442530e\n",
       "-77"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.N(val_sym, mpmath.mp.dps+1) - val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7.26 ms ± 82.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit mpmath.quad(f_mpmath, [a, b])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f_numpy = sympy.lambdify(x, f, 'numpy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.22 ms ± 19.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit integrate.quad(f_numpy, a, b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### double and triple integrals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def f2(x, y):\n",
    "    return np.cos(x)*np.cos(y)*np.exp(-x**2-y**2)\n",
    "\n",
    "def f3(x, y, z):\n",
    "    return np.cos(x)*np.cos(y)*np.cos(z)*np.exp(-x**2-y**2-z**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.4305647943060992, \\  7.28494733311039e-15\\right)$"
      ],
      "text/plain": [
       "(0.4305647943060992, 7.28494733311039e-15)"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.dblquad(f2, 0, 1, lambda x : 0, lambda x : 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAAVCAYAAABVJ9l1AAAABHNCSVQICAgIfAhkiAAACa1JREFUeJztnXuMXkUVwH/b3aXUpanQoraVdqv4AKvrI0BLQymgKNoGsPHRWGQx1EcKEROwUkTQWlRAwWpqqwiIWC3VSn2RqDGfT9QSCTXgE4uIVRSUlyIIXf84c+nsfDP3nrl3vm8XO7/kZnvnzj1nvjNnztx53FvIZDKZTEZBb8m1pwCPAyNdKks36AVeCNzdZXmp9Wqp0rsv8Fj3ihNFD7AYWIn8hv2B341piTJj5cepSfE7xrN/xrZr2x4DkfcCsAC4FOg357OAq4A1wDrgOmC2UtYwsAP4D/BH4NPANE++Y4FrgIuA9cA3gXkN5AF8H+nw7OPNHZanybfec704/u7IWgh8HrgMuB7YCExtWL7JwLkeXTba+rDpB25CbOoyjN7Oc4Gbjc6DAnli7BJDTN34GCatv9uU2VcrL7U/afVqY4i2fDH2Sx0HNP45FmjaNZTbYwbwIeAArdKlwJfZM/qYDexitJO+HfgzML1C1unAL4ELkYq91RTut8gIpmAJ8E/gaVbaQuAh4Dk15AEcCdyIdHzFsQaY2EF5mnyTgZ3AxcDZzrEDcdSC45Fev2gwPcBmU87JNcu3yPzefxMePWrrw2WtkTnspMfY+SjgfiS49AT0xNglhpi68ZHa311C9tXKS+1PWr3aGKItX4z9UscBjX+OBYuobtegs8cBwA1Ux3eOAG4Hplhp24C7GG2cXuAvwLUlsiYB33UK0g/8iPYefhuw3SPjHuCdNeQBfA04NFH5NPK0+U4DXuZJ70OeDF5uznuR4OXaeK4p30dqlq/gx4QdS1MfLguArbQHtBg7zwD+hjTYfQJ6Yu0Sg7ZufKT2d5eQfbXyOuFP2t+hiSEx5YuxX8o4oPHPsaasXYM+TgwB36Nk2aIX+BVwhpU2A9iNDP1cNgGPEh7OHot0QC5vQn7Qu620LUjPONNKGwAeAd5QQ94QMrS8Hnk69D21pZYXk8/HCUhQ6jPn80w5LvDkvRdpHEUDrKO3RdixNPVhMxn4BvB82gNajJ03mrRlJeWOsUsq3Lrxkdrfbcrsq5XXCX/S6NXGkJjyae2XOg5o/HOsaRFu17FxYiuwOnTx9UbRDCttqUk7z5P/febakgqlLovNfYuttBNM2g5k+NqDzEt+hfKF+ZC81cCfGD1HdwXt0zOp5TXR+znEIQuW0e6wBb8w1w5uoLdF2LFi62Mj8BJgEH9A8+HaeSLwLyS4rAJ+igSF2815ESxi7JIKt25iSOHvVfbVyOuEP2n0amNITPm09ksZB7T+aTOAdIAfBT4L/JD2Ka7UtAi361h7DCNTfwO+i9chwy2bdxmhb/Pkf4e5dlao5AHeA9xJ+9PaSmRX1oPAT/Av1sbIA3lyWQn81ZT1i12SF6t3InAfo6c8XmHuXefJ/wNzbX4DvS3Kh67a+ngtYjOI6zBcOy8w996HzBMDPBW42qSvNWl17NIEX93E0NTftfatktcpf6rSq40hseWLiRcp4oDWPwuehayBrDLnh5h8L1bobkKL8nYNensMmeu+US87kZ7cZrW54TRP/reYa++tKJxNHzLt9erA9Q3Aw0buz5CdFU3kFUxFdjWMAId3UZ4238m0T3k8HRli3wFMcPLfaGS+qIHeFtWOVVUf04GvWuUbRNdh+Oz8OnPvpU7efZCF0IeRqZkmdqmDr260NPX3WPuWyeukP5Xp1caQOuWLjRdN4oDWPws9f0DWWgrWAb+mnh/F0KK6XRdU2WOqufbJIsGumOnIkMvmHvO3n3aKNPeeMs4BvgB8y0nvA65EhnizkNHO4ciTw0zChOS53IvshAD/fGWn5GnzvRGZL7T3P98NXI4MudciNuoDTkWeUkaQhcQmekNo6+PjyBPk7kj5Pjs/bv7ucvI+CnwH2Vs+RDO71MFXN1qa+rvWvhp5nfAnjV5tDIkpX9140SQOaP0TpFOZg3SEk5CdV0cCr8LvRy1GTxOVHad77q9LlT0eNH8HfTc/gsyx2SxBCnmuJ/95xK1hnIjM5fk4H/g9ozuwc4z8DTXkhfiHkdsNedp8A0iD8U15TECGtLcAtwFfB1YgTnpTQ70twk8imvo4A5lm2Nc6nmfyrDDnvqepkJ0PM/de5Ll2sbl2vDlvahctZXVTRVN/j7Gvtv2k9ieN3pgYoi1fnXhR9jtsmvrnVKRT2GXKuR6ZVnRHTTazkA0NmmNKQEZBC/0IoyBkjwlG1rd9N92JDE9sDkR61is9+a9BDKN5weM44JKS67cAX/Kk34zsj46V56MH6TFP6oK8mHzLkCmPqsX9grORSnxrQ70two6lqY/i/rLjQuf+MjtPQuaHffOplxl5hwTuBb1dYoitm4IU/t5Cb9/Y9mPTxJ80epvGEF/5mvzeunFA65/FYrlv8b4btIjrMMrsMWBkbfLduJX2RW+Qfbs7nbQJyPBwq5Pum0M8Gn+PvT9wjPn3z5E9vy5bkGFmrDwfxyBlntRhebH5tqHfgTMbGeJvpzqIVeltEXYsTX0cimyFtI+Tjcw15vyZ1r0aO29AGqW7x/0G4DeEt8uW2SU22NtU1U0n/T3GvjHtx6apP2n1xsQQTfnq/l5oFgc0/lnsCnMX+fejfLosFS3iOoyyODHHyFrlucZyc9F9u++5yJuNy620FYjhnm2lrTL320OboxBHOR+ZzyuODyBPA8Wr98uA/zJ6Hm0asopv73nWyJuPvBC0iT1bhOcgi2LupwNSyovRWzAF2Rd9XOC6zX5Iw7mN0W+41tELMsQfwT+3rK0Pl0H8i7JaP5iJPNHbWzDnInPVIRuF7AJ79vnXGXVU1U03/N1lEL9968hL4U9avdoYoimfVm/qOAA6/zwIWQDfjoyuMNc+gUwjdppQu64TJ15Dych+ItLT+BZVXoB8LuRjyMLUFmQ+zeZUZGhzijl/qTkPDafdNzpficyVXYEMCzcji0QFWnkHIt94eQBxoKuA9wPPcPSllqfNZzOMbspjHrLn/GraP+EQq3c+8EFkIXUE+Awyb+tSVR8+BmkPaLF+cDCyn34z8CnkCXRhQF+ZXUD8dDfV0xQ+himvm077u49BwrukYuSl9CetXk0M0ZRPqzd1HCjQ+OdJyIjjIeSN8TMpX8NIQVW7rhOfLkdGT0/gDvGXIr3qEOP3K6Z7E8uRhvYYMmd769gWZ9wQY5c+pHGcUpJnb2G8+9N4L9/exDRkrWgRFV/hvQT4cBcKlMl0g9V0/mWpTOb/iV7k/Z+q99Ge4ALCH0HLZJ4sHIF8UiOTyejoR3Z9HR1742GM3y8yZjKZTCY9cwj/PyCZTCaTyWQymUwmk5D/AciYH3j6GAKDAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.2825255795184269, \\  7.2848958098526e-15\\right)$"
      ],
      "text/plain": [
       "(0.2825255795184269, 7.2848958098526e-15)"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.tplquad(f3, 0, 1, lambda x : 0, lambda x : 1, lambda x, y : 0, lambda x, y : 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "x, y, z = sympy.symbols(\"x, y, z\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f2 = sympy.cos(x)*sympy.cos(y)*sympy.exp(-x**2-y**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f3 = sympy.cos(x)*sympy.cos(y)*sympy.cos(z) * sympy.exp(-x**2 - y**2 - z**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left(\\int\\limits_{0}^{1} e^{- x^{2}} \\cos{\\left(x \\right)}\\, dx\\right) \\left(\\int\\limits_{0}^{1} e^{- y^{2}} \\cos{\\left(y \\right)}\\, dy\\right) \\int\\limits_{0}^{1} e^{- z^{2}} \\cos{\\left(z \\right)}\\, dz$"
      ],
      "text/plain": [
       "⎛1               ⎞ ⎛1               ⎞ 1               \n",
       "⎜⌠               ⎟ ⎜⌠               ⎟ ⌠               \n",
       "⎜⎮    2          ⎟ ⎜⎮    2          ⎟ ⎮    2          \n",
       "⎜⎮  -x           ⎟ ⎜⎮  -y           ⎟ ⎮  -z           \n",
       "⎜⎮ ℯ   ⋅cos(x) dx⎟⋅⎜⎮ ℯ   ⋅cos(y) dy⎟⋅⎮ ℯ   ⋅cos(z) dz\n",
       "⎜⌡               ⎟ ⎜⌡               ⎟ ⌡               \n",
       "⎝0               ⎠ ⎝0               ⎠ 0               "
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.integrate(f3, (x, 0, 1), (y, 0, 1), (z, 0, 1))  # this does not succeed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f2_numpy = sympy.lambdify((x, y), f2, 'numpy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZYAAAAVCAYAAABlq8hUAAAABHNCSVQICAgIfAhkiAAACl9JREFUeJztnX+QV1UVwD/L7oa6MKRAE6ssUMaU0lCWARpI0JSJhbVNRqFuZaSTTVNKDJajRVKJZj/G0jRhrKjcWoXRth/mfJvKLCwKRctinLJASEoRTUmpP869873fu/e9d+77sYvyPjPf+bL3e959555z3r3vnnvfA2pqampqakqkPeW3w4BngP8Nky7DQTvwcmBn4Lc24FTgg0bmcODPw6faAUttl5oDnUOAp0uUO1iItYfbf3ZFHgvAicDlQKf5uwdYC6wCvgTcCEyJrdTUdxfQF/htHtAAHgUeAr4OHBGQi9HlZ8jA6H7ODMjNADYDtwKTC7TjK4Hz2c8/Pdl5wDeAK4GbgWuA8TnPa+trUK79NHbR1qdtr1auD9gCPAn8FfgaMCFBxxhifBhCq9cC4AZgtTnnrcDsjLqz/F9WPMXGcYPsuCtbDmAssDKgUx65mDjW6JfHH8OF1m5p/Wc38BmSfTOEXuB7NGczU4DttAbfOcA/gEnaSg2XGuX6vPIFwI+ARcAs4NNG7iZPLkaXE4BfIQOk/awCRntyc5EgWYvcnedtx1jgAeAy4ALvswXpYCxvQEZ9G2htwHeBraaemPNCNfbT2EVbn7a9WrmzgbuBS5COeSvS3vuRmXZeYnwYQqvXm4F/Ay9wyuYBe4GXpNSf5P8y4ynGBtq4K1sOYD5i5ydIz6po5LRxrNUvrz+Gg/no7KbpP48ABlGMA7OAbcA4p2wD8HdaO5d2YAfwzawKHU4EBhgayG3IyOen5W4H9nhlMbpsBI7J0Kkb2IU4/HkZspakdrwHeFVAvgO5M3i9o+8DAX1nmDo/F3neKuyntYumPm17tXKHArfRGuCdwC9InpFq0fowRIxeG4BNgToeBj6cUH+S/8uOJ60NtHFXtpzPL9Gl69PkNHGs1S+vP4abLLtp+k+AmYgNEpdV2oH7gPOcsm5gPzJl91kP7EM3vRsL3AK8lKGBPAq5KH1uQi7KPLrMRFIRNyN3Wkl3gdcYfZYo2gDp7UjiTcgF2WH+nm2OvTgguxvpXPwZwnDbT2MXbX3a9mrlFiA3QD7vNsd/LEXnvPg+DBGjVz9yx3ikU9YFPAWcHqgjzf9lx1MSvg20cVe2nE8D3cCSJKeNY61+efwxEjRItpu2/7QMABe6BaOcf/cigTbglM1BjPCnQGV/RO7ITsg4Kcg06iKjrM9+4D9eWQ8wldaAj9FlEXIRLAbWIKmI62i9mxwNLEWM2wPciVzs24AVhJ2f1o4k3onY1C50TTPffptBcvLjgRdHnLds+2ntoq1P216t3O3ArwMyj5rvewO/FcX3YYgYva5HOqlBJA3ThsTpLUga2ifN/2XHUxK+DbRxV7Zc2WjjWKtfHn90IQPRFciazc8pltItiqb/dNkILEfaAbQOLG83lW13ynrM98OByuzCj28kn7chU8PNGXJWn17EsPcjHVoeXVYji80TkBnYTuB9wDrnmFcjztsD3IHcaXSbc38WyZ/mbYdlNOKcfqfM6n9UQH6v+Z6Y87xl2E9rF2192vbG2sVnBvAg8MMUmTyEfBhDSK9BJC6PBe5B0hJ3Ir57xjs+y/9VxpMlywZpcVelXBnk6ePS9Iv1x4sQXzwJnI8M+q8Fpit0rwpN/+myGXg+snsUaB1YjkfyjC526rcvUNlT5ntMioKTgDOQhUANy5Ac7n+BdyAXm13syqPLbuAq5AL+PXLX9RrzW7f5vg4JEIBHjA67gI86545th+UU05aGU7bFtOEttNofmrvwHs953jLsp7WLtj5te2Ps4tMBnIUsuJa9nTTkQy1pel0FXGtk5iDbuXs8GY3/q4wnS5YN0uKuSrkyyNOvpOkX44/xyLrcfTTXXs5FZk/3xDSiItL6Txc7bsy1BW7DJzH0wrWjbydDybrYAb4IfASZRmq4GjHsdGTL42TgvSXoshvZsQPNPLi9M9zuye4DfoLs8Z5pymLbYQmlUHYCX0BSIJciHYvtgF6BpKCso0bCflq7aOvTtjfGLj7LgW8BP0j4vQiaNFgSSXp1IOmwJ5DB5Ebkgr2D1nUXjf+rjCdLlg3S4q5KuTLI06+k6Rfjj8uR1NknkAFuNZJ2O5mwrRskbwP3P2cHjs9LqP90ecx8T7UF7mJkaE1hh/kOLdDbvfl/SVDmPOCnyF7vQ0yZzdF10nw4J2TA/Ug+fxnNKWERXQB+i2zxtLo86B3rYjvVwwq0owuZGi4O1L8S+BfwLvP7NiRP2Q78zvw2UvZ7yCtzce0S4w9Ne2PkXBab850f+K0oaT7MIk2vlcj24umIr05Hnie5DFn7OIc4/1cZTzE2CMXdcMgVoUi/kqSfxh/jkdnjDuA05Mb+NmSQSRr4z0S/9rIjWyQKv/90sTET3EH6N4bmXScid7DXB+RvMBUmPSDTIHtUvSThWMsumrsNiugCMnA+hjgR5A7hEeDbAdkrjX4vK9COJUiONu3tBi4XmLqWmb/zntclj/20dinqD7+9eeQWIouLVRHrQ0uWXn8AvhMo34w8BwPF/V9WPOWxgRt3Vcs1KLYrrGgcZ+ln8f1xKtXtYtTQQGc3i99/unSZutaHDhxADOSzEVnscxmFTOcGvHI3R3wMsvDrft5qFFhl/g4tcFmOQnKcR+fUxed1Rs7dMng10on6I+0gkudsK9CODci2XQ1TkCn5JpoX8EjaT2OXmPp8Qu2NlTsJ2UXjczjia0vsoOCS5UN/TUSr12+QXWQ+/Ug6DIr5v8x4ioljCMddlXINig0sUKxf0bQj5I9eo88HPNkxtKZDq6JB3MAS6j8t00xdK0IH2i2m/lOU05Etk0udsvcjHY+7W2KFOX55inJTGbpvfhwyRf8kzQWwLuQVF+fm0GUOMg1cT3MhehqyFdR/ZcaRyN3Yx52yGUjue2FkO1zGIbs80uqwjEEC7l5an8TWnrds+4HeLtr6XLTtTZObi3QEFyGpA/v5FHLXb1MY9jmErFlRiCwfhuJdq9cSZOHXzVdPQNJUac8OTSX7uZOi8eSSZgNt3JUt53OXaUNojUQrp4njvPol+WMysiV5E81dYguBLxNON5VNkj1i+k/LIpqZjCGMRkak0KLPscj++s8jC1P9yDMvLmchU6UzEpsSDuRDka2YjyMNWofkmo9LqCNLl4mIs/cgF+paJBhemFDf0cD3kVcufBW5Q5mX0oakdrj0oUsfzEZ2kaxDt+sldN6y7WfR2kVbH+jbmyZ3HBJnSekc94nnfiRffTfx9JHuQz/eY/QCeCPwY2T33RrEzidn6DSV9LgrI55c+ki2gTbuypazzEG2vu83bbiW8DqQVi4rjmP1g2x/nIZkAPYiD1l+iKE7ycomyx6x/SeIvQbdAn/Bvhe5u5pJ/RbQKlmKBPLTSK5968iqUzna9lZhlw7k4ki74Xm2c7DF04HOweSPCcia4Xwy3nq+BnkQrqbmucCFyDbPmpqacmlHXmlzivaAi0l+GV5NzbOFWcArR1qJmprnIJ3ILtGTYg88Hv0bf2tqampqDh6mUc7/f1RTU1NTU1NTU1NTUzPM/B/Nb9U+7mGMUAAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.4305647943060992, \\  7.28494733311039e-15\\right)$"
      ],
      "text/plain": [
       "(0.4305647943060992, 7.28494733311039e-15)"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.dblquad(f2_numpy, 0, 1, lambda x: 0, lambda x: 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f3_numpy = sympy.lambdify((x, y, z), f3, 'numpy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.2825255795184269, \\  7.2848958098526e-15\\right)$"
      ],
      "text/plain": [
       "(0.2825255795184269, 7.2848958098526e-15)"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "integrate.tplquad(f3_numpy, 0, 1, lambda x: 0, lambda x: 1, lambda x, y: 0, lambda x, y: 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "mpmath.mp.dps = 30"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f2_mpmath = sympy.lambdify((x, y), f2, 'mpmath')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "mpf('0.430564794306099099242308990195783')"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res = mpmath.quad(f2_mpmath, (0, 1), (0, 1))\n",
    "res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f3_mpmath = sympy.lambdify((x, y, z), f3, 'mpmath')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "res = mpmath.quad(f3_mpmath, (0, 1), (0, 1), (0, 1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAATwAAAATCAYAAAANiLFRAAAABHNCSVQICAgIfAhkiAAAB8VJREFUeJztm3uwVlMYxn91TpI0RLlFHSO3RG5DaUoXt0xNYkwiXYxcJjMYXRQRyQwh+iOFqeSaFDUuM8QcDeXeyMQYGpcMonIbt1THH+/a0zr7W2vvd+29zwntZ+abc7613/28737Xs9Zetw9KlChRYidB1Y4OoIFQBRwNrG9kvqL9apHmd1dgS+OFE4QmQH9gNPIMrYFP/4N+/+18OzO87aM9MBeYAswAngI6KElHAKuBP4EvgQeANg67PsB84HZgJvA80DUHH8BrQF3sM6yB+TR2Mx3Xo88PMa6ewCPAdOBZYDawd874WgETHL5saOvDRjPgXSSncYxAn+fOwCrj86Cc8YXkr0i/Gr4QHWjjG4Euzxo7bXwhz6GNz0aSrkL6Jm/7qLaMOgArgYnAPFN2BbACOBH4NiHQS4GrgUXALsBAYBTQCzgW+N3YDUBEdDjwvSnrCSwDjmP7G0zLB3CKsbnbKvsDWJAhPi2fxq4V0A+YZj1rhGHAm9b3M5DG2gnYiLzdnwSWI43s1wzx9TKfcUAL3NDWRxyTgRMc5SF57gE8BywGLkFEmTW+kPwV6VfDF6IDbXzaPGvstPGFPEeIDmxMxq2rkL5J2z5YAnyNiCVClSF71BMgSGNaBjS3ypoBr1M58lgCvOPg2IAkKJQPYCki9CLi0/Bp7Ubirrxq5G14mvleBXxOZY47m/juyBhfhDdwNxrQ1Ucc3ZHGWEf9N3FIng9AGs0aRJw+aOILyV+RfrV8Wh1o+bR51tpp49Pahba3CD5dQVjfpGofBwDbkLdaHI8Dm/FPD/oAJzvKL0KCH2eVLUR693ZWWUvgL2BwBr4uyJD5WWAMcGjO+DR8IXYu9EMEEo2uu5o4bnbYbkQaWVTRWfzW4u/wNPVhoxUy+jiCSmGG5Hm2KRuSErsmvpD8Fek3hM+FuA60fNo8h9SHNj6NXRa/SboK6ZvU7eM84+gGx7WbzLUBvps96G/u62+V9TNlq5FhahNkXWAR6RsoLr6JwDrqz9Ufov7bpSH48vh9GBF2hCH4hfC+udYxh99a/B1eaH3MRqZ0NbjfxC7E89wc+A0R8XhkKvQ7sNZ8t9/imvi0+SvabwifC3Ed5OVz6TmPXTy+vHZJfpN0FdI3qdvHtebi5Q7SK821axIfpxLXA19R+YYYDWxF1lVW4B/iavlAevjRwHcm1icaiS/Ub3PgJ+pPY043985w2C8317rl8FuLv8MDfX2ci+QMwjq8eJ67m3t/QtarAPZE1mbqgKmB8WnzV7TfUD4bLh3k4YNkPYfaueLLY5fkN01XWfqm1PYx0VwY6SCNFk5v9DyIC9XAx8DZnuuzkIXEOuAtZAcmD1+EvZHdrTrgpEbk09oNonKasC8yVfoCaBqzX2k4j8nht5bkDg/S62N/4Bkrvhp0HZ4rz+ebe++K2e6CHBv4A5niaOPT5q9ov1n4Irh0kIdPq2etnSu+PHY+vxpd5embKtpH5GiD+dvMcVNU9puH1IWxwGPAC7HyamAOMlRvj2wtn4S8Qdvhh48vjo3IDhG41xEaik9rdwGyMGufiVsP3ItMnaYiOaoGhiM7WnXIgm0evz5o6+M+5E27LZDfleet5u83MdvNwMvImcEuAfFp81e03xC+OFw6yMOn1bPWzhVfHjufX42u8vRNFe0j6pmjbV3XxkR0duazhKBsDDT3XOe4NgHZ3j8MecjByLmbO4FJyFZzCJ8L7wE/IgIJjS8Ln9auJbJ+MdBxbQKwCbjQXF+L7DZVIetQmwqIzwVNfVwFvIJMDyIf0ZpIM7Yfao6L3pfndeav60xW1Nh3C4gvskvLX9F+Q/hs+HSQlU+rZ61dkk6z2Pn8anWVt29yto+2yBtmjuOG+cbxXgmkEfoi53R8+AA5HxXHKuDDDHwuNEHWXc5pBL4QuyHI8F/765YxyOjkspx+a/FPaTX1Ed2f9Jkcuz8pzy2QdR/XuuN0w3dkQHw+xPNXtN8QPhs+HWTh0+o5RPdanWrskvzWotNV3r7J2z6WIueZbDRFpgOLY+WuNbdTqX/YL0JroLf5/23gVYfNQmS6EMrnQm8k5vhh26L5Qu2WoNvNApmebUDOgqUJL81vLf4OT1MfnZCjH/ZnkOGcYr4faN2ryfMspHHHz5q9CHzC9h3JEL3Y8OWvaL9aPhtJOgjh0+o5VPdanabZpfkN0VVI3xSHt30cBvwMDLXKRiEVcIhVNt4ENdYq62ECmoQsIEafW5G3YjT0HAL8Tf31pjbIsNY+e6Th64YMdx9HzuoAHIwsLsd/AlQkX4jfCHsg54P6eq7b2B1pqB8B++T0CzIVq8O9BqKtjzhqcG9aaHXQDhkd2EcNOiNrZnaOssTny19D+NXyRUjTgZZPm2etnTY+rV2o3wg1uHWl6ZsytY+jgKeBe5CF4IXIYUAbw5Eh4sXm+/Hmu29YGj8JfSbwEnI+Zhryk4+zrOtavrbIbw1/QYQ4F7gF2C/mr2g+rZ2NEeimCV2Rs1/zqNyRC/XbDbgNWYOqAx7Evd6SVh8u1FApzFAddETOtS0A7kfe1D1zxpeUv4byq+UDnQ7S+LR5Dq0PbXxpdln8RqjBv/uf1jep2kfaYcYSjYOhSIVuQdaO1uzYcP5zKPNXokSJEiVKlChRokSJEiVKlPg/4x9ldFx9iacTjgAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle 0.282525579518426896867622772405$"
      ],
      "text/plain": [
       "0.282525579518426896867622772405"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.sympify(res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 2min 44s, sys: 294 ms, total: 2min 44s\n",
      "Wall time: 2min 44s\n"
     ]
    }
   ],
   "source": [
    "%time res = sympy.sympify(mpmath.quad(f3_mpmath, (0, 1), (0, 1), (0, 1)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Line integrals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "t, x, y = sympy.symbols(\"t, x, y\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "C = sympy.Curve([sympy.cos(t), sympy.sin(t)], (t, 0, 2 * sympy.pi))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABcAAAARCAYAAAA2cze9AAAABHNCSVQICAgIfAhkiAAAAUtJREFUOI3t1L9L20EYBvBPQhrRrVDEwSpkcZGCbh0kiHUpEQfFUQItuAidixlKQUHUyUEowUHawcVCpwwOHfoPqIjgJi6FTq2C/YHW4S7wJUq+IZVOPnDce89799xzdy/Hf0QZ+/iJE7zDo7sQfokDvMESDvEXx+j6F+FO7KIjwT3Al7jBbDui2dg/xQJ+JXJ/sBHjnnbE01ASnJca+H58wFdcxTnJtg65FPFBnKKW4B5jJfLdWBZO/ArbccOdNNc5HOF5A1+M/TT2YlzAD+TTROt4jUqTfA2LMa7gY6vCk1hrku/DpVAIhLKda0V4TLjTZngr3G0WT4RHLKQJF93u+CFGYzyEc6zGcQUXyOAZeuuLMgmBEWxhMzqpI48JjAslWcVvDAgVU8ULfBa+jHKjs2GcuVmv9fY+zpvHN8wk1k7hOz7FE96jOa4BUu1GdusxyWIAAAAASUVORK5CYII=\n",
      "text/latex": [
       "$\\displaystyle 2 \\pi$"
      ],
      "text/plain": [
       "2⋅π"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.line_integrate(1, C, [x, y])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAARCAYAAADOk8xKAAAABHNCSVQICAgIfAhkiAAAAX5JREFUOI3t0j9I1VEUB/BP9l412BaBYPlwsoLEIQgaXGxUUFzSxVUIwqHtDaE4SG1NQUOLgQ66ROUgOoiDDhU0NAhBLS0RVBj9wRx+R9/t+h4KD5z6wuHe8+9+zz3ncMw42WT+Oq5gKbOXsYFfeN0kxz4q+ItrdXzT4RvLHS1NEI5gC5uZ/QYuNfFuQ7zFZGY7i2fo0uCHOTowi0/YiaRUHkZcd+hdWf4j9Ki1+wBhKblfwH18xHnM4CfuYC6KWIjYUcUyvEvyh/Aer4LwUPTGOYw3ce/EV5xK4k7gA+4mtjYsqu1ExRFbCi8VWwbVeCgvbEfRkT3M+/dXDQnzLb2Im4rBw60oIMUI1hSth9tYVrT8TMjp8JVDL2mAyUhswdWosjPxl/EZ44lt1cHlyuVePbIefMeD0Kv4oZhZH9oxgN84l+RdxvVMBoNoKvT2nGwMf7CtNpvHkbSCJ2Gbw/N61WaoOGSGrfgSAXuzeaHY0G+YiJh+PD0C4X8cH3YB+i9Y1huw87MAAAAASUVORK5CYII=\n",
      "text/latex": [
       "$\\displaystyle \\frac{\\pi}{4}$"
      ],
      "text/plain": [
       "π\n",
       "─\n",
       "4"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.line_integrate(x**2 * y**2, C, [x, y])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Integral transformations"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Laplace transforms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "s = sympy.symbols(\"s\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "a, t = sympy.symbols(\"a, t\", positive=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f = sympy.sin(a*t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( \\frac{a}{a^{2} + s^{2}}, \\  -\\infty, \\  \\operatorname{re}{\\left(s\\right)} > 0\\right)$"
      ],
      "text/plain": [
       "⎛   a                  ⎞\n",
       "⎜───────, -∞, re(s) > 0⎟\n",
       "⎜ 2    2               ⎟\n",
       "⎝a  + s                ⎠"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.laplace_transform(f, t, s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "F = sympy.laplace_transform(f, t, s, noconds=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAACkAAAAeCAYAAACxHzfjAAAABHNCSVQICAgIfAhkiAAAAYVJREFUWIXt1rFLVWEcxvHPVckhMYdEMFLBBKf6E3LQpVEJL7poi4VTQxJtttQQNLqKICjW2CIil8DBwSWbmhQEdQgpWhKkhnOES6n3eP1dVDhfOLzvC+c8z8N7eH/vj2tAfbBeEQ/RgXcoYDPY40K8wNuy9Xe0XVKWE3mAXTSl615sRInXBek8xQJ+peuXWA7SDgvZjf103o8erOF+hHjUwanDFG7jMx6hEYs4CvLIybkyFNLxz6WmCKANH7GN6avqM4wGNGMPLaHRgnxulM1XJfWvFpzqk+XGOUzHVqzgd1yuWJ8Cnsh2Q5XQdV6DKnz+YxA30/ndCu+WVB8yk08RkxjCJ4zimeTEfcU3DASEvIcPGMeOpMXL5BPVtGYJOSHZBHicVfgiTeuY5DI47dk64Zt2HGAka0CYwfuy9SzenEegjJKzd/K41IziJ25VEjwuQTVtWv/hueQUz+MHOit90JCO83gt+d1zkprVh1c1CNmHO1jHEr7UwKMiJdWXoJycnCj+ArwKTZ2EdFIJAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle \\frac{a}{a^{2} + s^{2}}$"
      ],
      "text/plain": [
       "   a   \n",
       "───────\n",
       " 2    2\n",
       "a  + s "
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "F"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAADYAAAAVCAYAAAANfR1FAAAABHNCSVQICAgIfAhkiAAAAuNJREFUWIXt1luIVlUYBuDHmVLHimIyZRI8hSYNZEU1F2F5SC8sghgoupFKu+tABy8KzKnAAim76ECCCGIXhYeIQqXQiw6QWHQgLCXGwshiQtLEIOHvYn2bWbNn/9M4+4cgfG++vd+19ru+w1rf2pxDSzEJbTU1LsC4ZoOjFV+OE7i9pjNwE55Fe02di7EOnXVE7pACu62mM73Ypn5QPWE7sQtdNfVqoQc/SJmugwVScgrMx171kzUmtOMgHqyh0Yb78CeeKI3twFPNPuzGZjyKTTiDa2KsE/fjzmz+XPThG1yHJ3EUA1hb0r4LDVw+guNdeA3PY3U4fyz8gsfxWehsw4bs23txXGoow/B5yfF1EdjN2B6Cfdn4VLwY/E7p/MzGm8H1ZHPfxm8jBHU1jsRaBT7EL6V5r4ZOuRvOjzXvrhI/gY3Z+zTMiOc5hgdG2hoNLM24a4N7JOP68UXVolIVB6SK5NiPLSXuIN6q0Lg01nylIPJ2vxUPYA+uxM/4Mcb+buJUo2L8eNhLMq4Lp5povIHTUjUKdEhV/KCkMU9qFGWcDDuzIPLAHpYiXoqv8Yx6nWZck+cc3dLd+BL+yvh7MMHQIBaF3Vehcybs+ILIA2vDQ7gRn+BprB/Z91HjV1xYwRdn+v2Mm4Q1OCztmgKL4/1QhU5H2IGCyANbE/YAlmA3lo3S8X/DAenMljErbB7AY/gDH4V/VwS/SKrgeIPdusCUsF8VRB7YSoOXZwM/4eN47yjZAhMrdC4Ke17G7cBlhv8hHAvbi+nSDtklNauj0hXye3w3G19Ku+q7ks5VYd9VgYZU5j48h9ele2GhwRbejxUxv0e6Ihp4D9dL2X0nuO9xa8ydEI6uKq05RUreSalpdUdC+qXjUFR5RgT4aSSgjJcjIf8JevGtoZVsBSZLW3lOi3XPCuvxQgv12qWfg+Ut1Bwz1hp6eY8V50u/Vbe0QKtluEF254wRs6RteA7/C/wD13iO3O3+2mUAAAAASUVORK5CYII=\n",
      "text/latex": [
       "$\\displaystyle \\sin{\\left(a t \\right)}$"
      ],
      "text/plain": [
       "sin(a⋅t)"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.inverse_laplace_transform(F, s, t, noconds=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG8AAAAjCAYAAACaX1R3AAAABHNCSVQICAgIfAhkiAAAA/VJREFUaIHt2lmIHEUcx/FPdtd4H3jFeHYgxujDahARA8GAgkoWQUWEKLqKWRFFjEEjAQXBB/UhAX1QHwwRY0SjoIgK8XoThWBQH8QDjK7igQce4CJqfPjvsJ3dnZmema6ejfQXFranu+tX//5VVVf/qwZ1zoE4BBNd3DvXWYIxLMaX/kcxDmAU47gwsdYF+Ai/43WcklgP1uCdhFpFYhrA21jZjcBC7MTjeAzn5c4twCLskda847AVw7gIX+DNhHpwKX4U8aegaEy34GczzbtE+LFZ+DN/NpFMmHNAi4qkNm81Ds8dj0o7fA1hN+5JqFEkphVYNVmXlU3KyeT8GSivfqWxDb/mjr/HVwn1VoghbBGex8e4tWSNdjEdheV4pZNCh3qvV3KW4dGE5Q+L99Dd+GFSb+fk37uJNKfHtBb3d1rIXOx5eQ7GmXgkocZB+EQYB7uEaSOJ9KbHtEb0zI5fDXPdvDtxG/5OqPGdeKB5xnFkIr3pMY3hfWHehBjCd+C5TgvO9H/C0mAMp+aOZ51hlcBi/IH9c7+9KB5y2RSJabdEE5aqeup1+BODWIrzxYwtBZ/jPTHTg/3EsLa1ZJ3SY+pkwnIsbpz8fzW+ETOzsrkYT4gg8yxNoNXgWmzEaTgRN+PbEsuvJKZM+2Gzpn9k5vh3Xk1BavP2YWrz9mHaTVj2dFnuvC7uqVKrW70qtdrqtjOv28rmGcQ/Ba6rUqsMvSq1ZqWXYXMBXhCLlvc1uWab+LYZ60GHWPzdhDewPrFWg2ViGaYKrQYDZmZ7CpMp/qlwlei5h4kU0xGzXLMd/4pFyF4YFi19QBg4G2VpwaFYhy0VaMFdIlmwS+xUaEamhT8tT04jn9p5y97ppTxDeKpAeUVYLhpNM8rSGhVLRFsq0JqPBxV75pmSzGtwDDa0OL8BZ3VQXjNOxpMiq9OsfmVojYhXQqa1eWXFdTpeFWt8V7S5NlOiefNwg5lpnwbnindHmTyDcxJqPSsS0zvEguntCbXyLBFDZ6sEfKZE8y439YI9qeA9vbJRrDynJtO656XgYRzd4nymw/TYYrE94Hp8LWZ+RPJ2k8jIf6qcJGszrXUiyz8ihpifStBqpVcl+bnChNgI1RWZmT3vJlN7K67stuCCVKnVD73ZGsu9eAnXiAlZKzIdDpvH4xfp1tPyVKnVD71eG0umA/MaL8+r8Zu9t6+VTZVa/dCj98aS6cC89aZSO+PiYzkVVWr1Q6+MxpLJ+dMut7kSJ4hJyXZ82IVgUarU6ofeWjyEp/GA2GjUk+b0hOlCvIwPhMObxf79mt55DZ+JxnI27ujg3lW4TPTeM8TE5q+yK1hTU1NTU1NTUzr/AY+75vhVLPt6AAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle \\left[ \\frac{1}{s^{2}}, \\  \\frac{2}{s^{3}}, \\  \\frac{6}{s^{4}}, \\  \\frac{24}{s^{5}}\\right]$"
      ],
      "text/plain": [
       "⎡1   2   6   24⎤\n",
       "⎢──, ──, ──, ──⎥\n",
       "⎢ 2   3   4   5⎥\n",
       "⎣s   s   s   s ⎦"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[sympy.laplace_transform(f, t, s, noconds=True) for f in [t, t**2, t**3, t**4]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "n = sympy.symbols(\"n\", integer=True, positive=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEAAAAAWCAYAAABwvpo0AAAABHNCSVQICAgIfAhkiAAAAiJJREFUWIXt10uIT2EYx/GPMTSj3O/3iYgmEsrChgWN2FKmiCwsxsLKYmxcN4gdZTElGyVMs7BwaaKEFVKSLIyJTBn33BsW7zvNmb8zmPmfM82/5lun97zPec7vfc57ed73UFpUYkyWgmVZiuVIGbbhCZZnLVwKTMQNzMhauDxrwZxoy0u4VGZAbmTdAZNxCtcxHcfwAuMybqcYFqAdu8m+A9rwHg+xFnuF9duRcTvFsEwYkHX0rgNm4vVfroboVxN1z2AF7uNdH3Tyoj2WH+hdEmzFhH/4TEE1aoVRX4/LfdDJk9ZYtvDnDJiLKziMRvzCql6I16AZjxL1q1jat1i70dNsHS4stfN4ilmYhiZ8xpEC/5ZYPksTu4BLifpNIZn9L+ewM1F/jIMxyGKYhHphQBqwsOD5+NjWPWEWnkSVcHC6m6L3FhvSGmrGS4yI9dri4u43yoXkewgnUBHtr3A6xf8BFqUJ7dDVy6XESiHus8IyhvnRtjHFvwkj04TKcC2+uDXzMPNjn5B0dyVsdfiJsSn+BwoNlRgS76cK29bzTEPMl1vC0k3mmkbc7sF/XqFhC5Yk6seFHq0odByAjMYPHE3Yhgo5Yb/wDdUF7wzrvOncWqp0T3jfcAdfs401F1YLSfBiwrYYo4RkV69r6yP8Tn8Ut8fOg9BsbBeyfyvmYHOeUWfIGuEEmdzu3sRrDzbhU+JZB77ge38FOMgggwxcfgPrlm+qge5ADQAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle s^{- n - 1} n!$"
      ],
      "text/plain": [
       " -n - 1   \n",
       "s      ⋅n!"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.laplace_transform(t**n, t, s, noconds=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAACwAAAAfCAYAAACcai8CAAAABHNCSVQICAgIfAhkiAAAAfVJREFUWIXt1k+ITWEYx/HP5RqJkPGvkUahrNylkc2UscNimGgs/FtIsrCY1FhITSgLWVmymZU/ZWEn3Y2FhY0sZMOgUCSiNBSL9+iernPOvXPOyTW53zrd93nueZ73d97zPud96GIDbuIwXmNRmcmrZSaL2I4FuIYv0fVP04ePGO20kHboiX4P4DOWdFBLW5xGJRq/wuayJyh7Dw9iDR7iBh6XnL9Ll1nP74r+2VEVs5xVuIUpnGsnoKrk8z+DZQm+fZGGxXiLpVkJluMs5pcuLZkajjf5emLj+1laqrjt7x+nu3Ewwb8C41mBZ3CywMR1rMsZew8rY3YFRzA3LWAOXmJjzgkpJvg8xmL2MBZG47VJATV8T/DvxwnswV2hC0ujrrXgtOZ+VOg/CHt6Ck/wDDuSEu3C+ybfGC7G7A/CJ6eI4GPCg8NIzL8zYf5MRvAuZtfwRmMFNuFRU8wh4cBJu14kzJPW3A9heiaCt+JbzL6KyzH7Oi60yFGXvcJZzf0wnreWGYqN0Lf+0KjU9RorPiQU4wPFGvJTQvVP4hP6Y/+t9ucbzBT8VSiGbZE9KWz+CeHrMS00508LCB7EFWGFm5v7AeEtzoh+3CkgqC7fZ61PeIBKqxuT2IujeQJzMg+XhFMtNwPoLUVOa7ZoHBBduvwX/AJYElcfb6sgDwAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$\\displaystyle \\frac{s}{\\left(a + s\\right)^{2}}$"
      ],
      "text/plain": [
       "   s    \n",
       "────────\n",
       "       2\n",
       "(a + s) "
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.laplace_transform((1 - a*t) * sympy.exp(-a*t), t, s, noconds=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Fourier Transforms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "w = sympy.symbols(\"omega\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "f = sympy.exp(-a*t**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "F = sympy.fourier_transform(f, t, w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIgAAAAeCAYAAAD3hVYMAAAABHNCSVQICAgIfAhkiAAABNlJREFUaIHt2nmoVVUUx/GPQ2o+i9JKsl5pRShiFhURNGd/FWLZJM2CzUVRVpRRRjZp2UQWaIpQUTRHYY8yqEzQRiiwonkymssmKu2PtcXj9Q7Hd+979/i4X7i4zz577bPcv332WnufR4sWLVoUhTUN+HUXQ/EYPsP0Jth3B4XSYw98jt6N7LQLOQF9sSVWYqtutu9qCqfHXYr7JpWjX6a8GP272b6rKZQe/fE9hjfZj86wLa5ssP1QrKijz3opnB6T0NFsJzpBL0xGnwbbn42b6/CrXgqnx4siJm9qHIO2VG5voH0H9qvDr3oplB4j8J3ixeBanCN2IO/iAxzRIPut8IlYXZpB4fS4Hrc324kKjMVS/G39rdukKjZ9cRHOxehUtz0uxGU5nnkq7i6pOxHnYSKexUkVbF/DbTmeUY1C6dEHX2JMsx0pQz8cKnKE87EbFuSwm4+rU3l8xmYQVmOLGvZP4rDM9VTclLn+QSSxpQwXk3ffHD5WonB6HIll3fzMdpGhV/rdX9J+CXbCdTiuRt8H4ScMTNfL8XAqjxACDq5i34YvxCpErGDfiMkFI/FGBdsr8WEN/2rRDD2q8jjObLYTVdhTiNxL5Alb1mg/E49mrldhXCofq7K4Mm3mZ67nYHbmegFurGD7rpjE9dBteuyD51RPtLbDz2oP+s54QJw2rrbhUe5dZWzacA1uxTy8Yt1bnZfd8TqmpPK3OBAHVLGZjTtSeTjezNx7Tu1E9kERltbSgStSeZxYzY4Sp5xZxoqxGFmh30bqQeRU94jJOhWXCn1GVzNayxn4Kzl8SJV2U9WO6e14RAi9Ojl0rVjG703l0sHaRbztl6frUcmXPfM4n2EOFonlfhh+xNwaNrslf48U/78LMEEM4NE1bPvhKwzI1J0mdjrXi0n6EmZZ/xQWbsFbFfptpB7EeH8qwulaXhChsCZTRIK2ODm0sErbFaq/jXBw+vdYvJPKu+BXGw4SDMHHeCpTd2d6Vt8y7XsCvcQ3k6ll7jVaj2EiT7ukpH5Zjb43YDB+T79yS9YBeH8j+luEGak8DU9UaDdfDMQYbI4bRJgYvhHP2tQ4WKyu1Q7qGqXHMyKJzq5ym4sV6pQ8zmZZKMQql/QskO9MgNhB/If90/V7OKtMuyH4F1+Lt+YecVJZmK+RXcR9eDlHu3r1GJ3sLy6pn5zqd8jhw3ocmgyXltRvIZKhcnv5clwnEqDeIv6tEWGmlKPSvbwTryewmTgXOSdH23r1mJbsd8/UDRSnvh/kcbaUXvgodToqU3+WyiGilL3EVnFWxsk/U9/jsGOm7cT0rNLVZZBOzO5NhPH4B9vkaFuvHvOSbVumbhreTvd6Y9cc/azH1anTmZm6ZeJtr8XpImT8YV18nZv6e8mGGXe7mDzLxSd0OFxsgwfomTwstq95qUePGcn2VBH2Z2JvkddMx1U68UdPa/OHlWIXMUZs5fJ8Hj9ffDQ6PlM3Eb/gaWxdxmaCSLZW4VWxzeypOcgg8fKcvBE29eixnRjT3/C8yEn6ihCzRB2rdIeYeePFIdKM6s1bdDGF0+NE4dAisSJsdJxq0VAKp8cAcQq5RhzYtGgu3apHnvj+Fx5K5Xld6EuLfBRSj73F95OeupvY1CikHuUOt1o0j5YeLVq0KDj/A5KvS1aI8GUbAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle \\frac{\\sqrt{\\pi} e^{- \\frac{\\pi^{2} \\omega^{2}}{a}}}{\\sqrt{a}}$"
      ],
      "text/plain": [
       "      2  2 \n",
       "    -π ⋅ω  \n",
       "    ───────\n",
       "       a   \n",
       "√π⋅ℯ       \n",
       "───────────\n",
       "     √a    "
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "F"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAACcAAAAYCAYAAAB5j+RNAAAABHNCSVQICAgIfAhkiAAAAY5JREFUSInt1rFLVVEcwPGPJpr4CuURYfJAijIC6x9wCCpaHEKHhDY3qabSXRCTCAQbasqWtoIagoaIBreKFhFrCMzBkhqKKHVQh3MfHp/yfIvvNLwvXO75nQu/++XHOb9zqFGWo3iGBYwmdtnBVTTgML6hNa3Odhqj8Rs0FYP66rvsYC17H8FrrCZ0Ac3oiuI6DOJAGp0tOvAWZ6K5PrRk40I1JAZwHf14iWvI4S4WcSMTGhJ26iw+49J+iw1jIop/Ci0DbuHhfvy0gB9lnkc4hyWhSnAaH6Icr4RqJuEBJqP4Me5k4yb8RlsliRp2mWvBbaEptuIULuNvhXInhH4FF3EST3EWeczhWJavbNso7XPH8RErwtq4h55MsFKeCIt8DF+FPnYe88KyyOHQXmKl5PEFL6K5qSzpbhWuKtPYQLfQJMfxHp2phOqydx7fsSws6HbhKHmO9TRqW/QKVRtJLRJT3BDFm8Cvku854bhJSgH/8E64HcAF3MfBVFIxV/AJfzCDm/6PK1WNGlVjE9OrRauGLsIJAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle e^{- a t^{2}}$"
      ],
      "text/plain": [
       "     2\n",
       " -a⋅t \n",
       "ℯ     "
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.inverse_fourier_transform(F, w, t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAwAAAARCAYAAADpPU2iAAAABHNCSVQICAgIfAhkiAAAANRJREFUKJHN0T1Kg1EQheHHaApBsIiFP5AUovZW6losbAQ34AKyFRHLgO5BcAkqighqCi20sDCgWHwTGD6msXOawz1z3zMwwx9rpvXuY4gnLGIZx3is4AFecJC8IzxjpQLOIzlPncUYp+3Pq/jBSRF0hgl60AlzN5JvCuAaXexloB/6VgCvoesZmA+dFMBX6EIGpsndAph6nxkYh/YKYCn0LgNXmi1tFMAWvnHZblzgoeV1NLcZFUE28YH95B3iXWwI5lLzVrPrIbYjfQ07uK8m/JP6BfjqI2oeUfGRAAAAAElFTkSuQmCC\n",
      "text/latex": [
       "$\\displaystyle 0$"
      ],
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.fourier_transform(sympy.cos(t), t, w)  # not good"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Versions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%reload_ext version_information"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table><tr><th>Software</th><th>Version</th></tr><tr><td>Python</td><td>3.6.8 64bit [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]</td></tr><tr><td>IPython</td><td>7.5.0</td></tr><tr><td>OS</td><td>Darwin 18.2.0 x86_64 i386 64bit</td></tr><tr><td>numpy</td><td>1.16.3</td></tr><tr><td>matplotlib</td><td>3.0.3</td></tr><tr><td>scipy</td><td>1.2.1</td></tr><tr><td>sympy</td><td>1.4</td></tr><tr><td>mpmath</td><td>1.1.0</td></tr><tr><td>skmonaco</td><td>0.2.1</td></tr><tr><td colspan='2'>Mon May 06 14:55:36 2019 JST</td></tr></table>"
      ],
      "text/latex": [
       "\\begin{tabular}{|l|l|}\\hline\n",
       "{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n",
       "Python & 3.6.8 64bit [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE\\_401/final)] \\\\ \\hline\n",
       "IPython & 7.5.0 \\\\ \\hline\n",
       "OS & Darwin 18.2.0 x86\\_64 i386 64bit \\\\ \\hline\n",
       "numpy & 1.16.3 \\\\ \\hline\n",
       "matplotlib & 3.0.3 \\\\ \\hline\n",
       "scipy & 1.2.1 \\\\ \\hline\n",
       "sympy & 1.4 \\\\ \\hline\n",
       "mpmath & 1.1.0 \\\\ \\hline\n",
       "skmonaco & 0.2.1 \\\\ \\hline\n",
       "\\hline \\multicolumn{2}{|l|}{Mon May 06 14:55:36 2019 JST} \\\\ \\hline\n",
       "\\end{tabular}\n"
      ],
      "text/plain": [
       "Software versions\n",
       "Python 3.6.8 64bit [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]\n",
       "IPython 7.5.0\n",
       "OS Darwin 18.2.0 x86_64 i386 64bit\n",
       "numpy 1.16.3\n",
       "matplotlib 3.0.3\n",
       "scipy 1.2.1\n",
       "sympy 1.4\n",
       "mpmath 1.1.0\n",
       "skmonaco 0.2.1\n",
       "Mon May 06 14:55:36 2019 JST"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%version_information numpy, matplotlib, scipy, sympy, mpmath, skmonaco"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py3.6",
   "language": "python",
   "name": "py3.6"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
